sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man konverterar en sträng till ett datum/tid i SQL Server med CONVERT()

I SQL Server kan du använda CONVERT() funktion för att konvertera ett uttryck av en datatyp till en annan. Därför, om du behöver konvertera en sträng till ett datum/tid-format, kan den här funktionen hjälpa.

Den här artikeln innehåller exempel för att demonstrera dess användning.

Syntax

Syntaxen ser ut så här:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Dessa argument definieras enligt följande:

expression
Alla giltiga uttryck.
data_type
Måldatatypen. Detta inkluderar xmlstor och sql_variant . Alias ​​datatyper kan inte användas.
length
Ett valfritt heltal som anger längden på måldatatypen. Standardvärdet är 30 .
style
Ett heltalsuttryck som anger hur CONVERT() funktion kommer att översätta uttryck . För stilvärdet NULL returneras NULL. data_type bestämmer intervallet.

Exempel 1 – Konvertera till datatyp

I det här exemplet konverterar vi strängen till ett datum datatyp (vi anger detta genom att använda date som första argument).

SELECT CONVERT(date, '20 Dec 2018') AS Result;

Resultat:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Naturligtvis måste strängen vara i en stil som kan konverteras till den angivna datatypen, annars får du ett felmeddelande:

SELECT CONVERT(date, 'Homer') AS Result;

Resultat:

Conversion failed when converting date and/or time from character string.

Exempel 2 – Konvertera till datetime-datatyp

I det här exemplet konverterar vi till datetime datatyp:

SELECT CONVERT(datetime, '20 Dec 2018') AS Result;

Resultat:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 00:00:00.000 |
+-------------------------+

Du kan också ange tiden:

SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;

Resultat:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 14:00:00.000 |
+-------------------------+

Exempel 3 – Konvertera till datetime2-datatyp

I det här exemplet konverterar vi till datetime2 datatyp:

SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;

Resultat:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Exempel 4 – Konvertera till datetimeoffset-datatyp

I det här exemplet konverterar vi till datetimeoffset datatyp:

SELECT CONVERT(datetimeoffset, '20 Dec 2018') AS Result;

Resultat:

+------------------------------------+
| Result                             |
|------------------------------------|
| 2018-12-20 00:00:00.0000000 +00:00 |
+------------------------------------+

Exempel 5 – Konvertera till smalldatetime-datatyp

I det här exemplet konverterar vi till smalldatetime datatyp:

SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;

Resultat:

+---------------------+
| Result              |
|---------------------|
| 2018-12-20 00:00:00 |
+---------------------+

Exempel 6 – Konvertera till tidsdatatyp

I det här exemplet konverterar vi till tiden datatyp:

SELECT CONVERT(time, '20 Dec 2018') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 00:00:00 |
+----------+

I så fall angav vi ett datum men inte en tid, så det kom tillbaka som 00:00:00 . Här är ett annat exempel där vi faktiskt anger en tid:

SELECT CONVERT(time, '2pm') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 14:00:00 |
+----------+

Men om vi lägger till datumet får vi ett felmeddelande (till skillnad från ett tidigare exempel när vi konverterade till datetime ):

SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;

Resultat:

Conversion failed when converting date and/or time from character string.

Så i det här fallet måste du konvertera till datetime eller smalldatetime .

Exempel 7 – Att utelämna datumet

Om du utelämnar datumet när du konverterar till datetime eller smalldatetime datatyper returnerar den 1900-01-01 som datum:

SELECT CONVERT(datetime, '2pm') AS Result;

Resultat:

+-------------------------+
| Result                  |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+

Om du får ett felmeddelande när du försöker konvertera en sträng till ett datum, prova PARSE() funktion istället. Det kommer att fungera i vissa fall där CONVERT() gör det inte.

Du kanske också vill kolla in CAST() funktion, som är ett ANSI SQL-standardsätt att konvertera mellan datatyper. Så här konverterar du en sträng till ett datum/tid med CAST() .


  1. Introduktion till SQL

  2. 11 sätt att hitta dubbletter av rader som har en primärnyckel i Oracle

  3. Hur man hittar alla begränsningsöverträdelser i en SQL Server-databas

  4. Hur man får MySQL att hantera UTF-8 korrekt