web-dev-qa-db-fra.com

comment convertir la date au format `mm/jj/aaaa`

J'ai une colonne sql table avec date nommée CREATED_TS qui contient les dates dans un format différent, par exemple. comme indiqué ci-dessous

Feb 20 2012 12:00AM
11/29/12  8:20:53 PM          
Feb 20 2012 12:00AM
11/29/12  8:20:53 PM          
Feb 20 2012 12:00AM
11/29/12  8:20:53 PM          
Nov 16 2011 12:00AM
Feb 20 2012 12:00AM
11/29/12  8:20:52 PM

Maintenant, je veux les convertir au format mm\dd\yyyy avant car je compare les dates dans la clause WHERE de ma requête SELECT

J'ai essayé d'utiliser

CONVERT(VARCHAR(10),CREATED_TS,101)

mais a obtenu le résultat comme,

Feb 20 201
11/29/12  
Feb 20 201
11/29/12  
Feb 20 201
11/29/12  
Nov 16 201
Feb 20 201
11/29/12  

J'ai besoin du résultat comme par exemple. 02/20/2012 afin de comparer.

Toute aide serait appréciée.

23
Rohaan

Comme vos données sont déjà dans varchar, vous devez d’abord les convertir en date:

select convert(varchar(10), cast(ts as date), 101) from <your table>
39
Roman Pekar

Utilisez CONVERT avec le spécificateur Value de 101, tout en transmettant vos données à date:

CONVERT(VARCHAR(10), CAST(Created_TS AS DATE), 101)
22
mattytommo

Cherchez-vous quelque chose comme ça?

SELECT CASE WHEN LEFT(created_ts, 1) LIKE '[0-9]' 
            THEN CONVERT(VARCHAR(10), CONVERT(datetime, created_ts,   1), 101)
            ELSE CONVERT(VARCHAR(10), CONVERT(datetime, created_ts, 109), 101)
      END created_ts
  FROM table1

Sortie:

 CREATED_TS | 
 | ------------ | 
 | 20/02/2012 | 
 | 29/11/2012 | 
 | 20/02/2012 | 
 | 29/11/2012 | 
 | 20/02/2012 | 
 | 29/11/2012 | 
 | 11/16/2011 | 
 | 20/02/2012 | 
 | 29/11/2012 | 

Voici SQLFiddle démo

5
peterm

Utilisation:

select convert(nvarchar(10), CREATED_TS, 101)

ou

select format(cast(CREATED_TS as date), 'MM/dd/yyyy') -- MySQL 3.23 and above
0
Mohammad Anini