sql >> Database >  >> RDS >> Sqlserver

Converteer datetime in sql-server

Om "25-okt-2010" te krijgen

Ervan uitgaande dat de waarde wordt geleverd als een tekenreeks, niet als een DATETIME-gegevenstype:

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

Zie de CAST/CONVERT-documentatie voor andere formaten, hoewel degene die je hebt aangevraagd nabewerking vereist.

Om "2010-10-25 00:00:00.000" te krijgen

De best presterende manier is om DATEADD &DATEDIFF te gebruiken:

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

Referenties:

Testen

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

Retourneren:

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

Aanvulling

Aangezien u SQL Server 2005 gebruikt, kunt u het opmaken van de datum voor uzelf gemakkelijker maken door een SQLCLR-functie te maken waarmee u de .NET-datumopmaak kunt gebruiken.



  1. Waarom wordt selecteren uit opgeslagen procedure niet ondersteund in relationele databases?

  2. databaseontwerpprobleem bij het toevoegen van nieuwe kolommen aan de tabel vanuit de toepassing

  3. Opgeslagen procedures aanroepen vanuit Java

  4. Gegevensvelden overslaan tijdens het laden van gegevens met scheidingstekens met SQLLDR