Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Convertir datetime dans le serveur sql

Pour obtenir "25-Oct-2010"

En supposant que la valeur est fournie sous forme de chaîne, et non de type de données DATETIME :

SELECT REPLACE(CONVERT(VARCHAR, CAST('2010-10-25 11:13:36.700' AS DATETIME), 106), ' ', '-')

Consultez la documentation CAST/CONVERT pour les autres formats, bien que celui que vous avez demandé nécessite un post-traitement.

Pour obtenir "2010-10-25 00:00:00.000"

Le moyen le plus performant est d'utiliser DATEADD &DATEDIFF :

SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)

Références :

Test

WITH sample AS (
   SELECT CAST('2010-10-25 11:13:36.700' AS DATETIME) dt)
SELECT REPLACE(CONVERT(VARCHAR, s.dt, 106), ' ', '-') AS col1,
       DATEADD(d, DATEDIFF(dd, 0, s.dt), 0) AS col2
  FROM sample s

Renvoie :

col1          col2
-------------------------------------
25-Oct-2010   2010-10-25 00:00:00.000

Avenant

Étant donné que vous êtes sur SQL Server 2005, vous pouvez vous faciliter la mise en forme de la date en créant une fonction SQLCLR qui vous permettrait d'utiliser la mise en forme de la date .NET.