Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Converti datetime nel server sql

Per ottenere "25-Oct-2010"

Supponendo che il valore sia fornito come stringa, non come tipo di dati DATETIME:

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

Consulta la documentazione CAST/CONVERT per altri formati, anche se quello da te richiesto richiede una post-elaborazione.

Per ottenere "25-10-2010 00:00:00.000"

Il mezzo con le migliori prestazioni è utilizzare DATEADD &DATEDIFF:

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

Riferimenti:

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

Resi:

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

Addendum

Dato che sei su SQL Server 2005, potresti semplificare la formattazione della data creando una funzione SQLCLR che ti consenta di utilizzare la formattazione della data .NET.