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.
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>
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)
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
Utilisation:
select convert(nvarchar(10), CREATED_TS, 101)
ou
select format(cast(CREATED_TS as date), 'MM/dd/yyyy') -- MySQL 3.23 and above