sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera datetime i sql-server

För att få "25-okt-2010"

Förutsatt att värdet tillhandahålls som en sträng, inte en datatyp DATETIME:

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

Se CAST/CONVERT-dokumentationen för andra format, även om det du begärde kräver efterbearbetning.

För att få "2010-10-25 00:00:00.000"

Det bästa sättet är att använda DATEADD &DATEDIFF:

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

Referenser:

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

Returnerar:

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

Tillägg

Eftersom du använder SQL Server 2005 kan du göra datumformateringen enklare för dig själv genom att skapa en SQLCLR-funktion som gör att du kan använda .NET-datumformateringen.



  1. Fel 1062 - Duplicera post '127' för nyckel 'PRIMÄR' - kan inte hitta orsaken

  2. mysql-avgränsningsfel

  3. Kan du skapa ett index i CREATE TABLE-definitionen?

  4. Effektivt sätt att uppdatera/fylla en mysql-databas med extern XML