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

Sådan konverteres en streng til en dato/tid i SQL Server ved hjælp af CAST()

I SQL Server kan du bruge CAST() funktion til at konvertere et udtryk af en datatype til en anden. Denne funktion fungerer næsten det samme som CONVERT() funktion, bortset fra at syntaksen er lidt anderledes (og CAST() accepterer ikke style argument).

Så hvis du har brug for at konvertere en streng til en dato/tidsværdi, kan du bruge CONVERT() funktion eller CAST() funktion.

Og hvis du får en fejl, mens du bruger disse to funktioner, vil PARSE() funktion er måske lige hvad du har brug for.

Denne artikel indeholder eksempler på brug af CAST() funktion.

Syntaks

Syntaksen ser sådan ud:

CAST ( expression AS data_type [ ( length ) ] )

Disse argumenter er defineret som følger:

expression
Ethvert gyldigt udtryk.
data_type
Måldatatypen. Dette inkluderer xmlbigt , og sql_variant . Aliasdatatyper kan ikke bruges.
length
Et valgfrit heltal, der angiver længden af ​​måldatatypen. Standardværdien er 30 .

Eksempel 1 – Konverter til datodatatype

I dette eksempel konverterer vi strengen til en dato datatype (vi angiver dette ved at bruge date som det andet argument).

SELECT CAST('20 Dec 2018' AS date) AS Result;

Resultat:

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

Ligesom med CONVERT() strengen skal være i en stil, der kan konverteres til den angivne datatype, ellers får du en fejlmeddelelse:

SELECT CAST('Homer' AS date) AS Result;

Resultat:

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

Eksempel 2 – Konverter til datetime-datatype

I dette eksempel konverterer vi til datetime datatype:

SELECT CAST('20 Dec 2018' AS datetime) AS Result;

Resultat:

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

Du kan også angive tidspunktet sammen med datoen:

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

Resultat:

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

Eksempel 3 – Konverter til datetime2-datatype

Her konverterer vi til datetime2 datatype:

SELECT CAST('20 Dec 2018' AS datetime2) AS Result;

Resultat:

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

Eksempel 4 – Konverter til datetimeoffset-datatype

I dette eksempel konverterer vi til datetime offset datatype:

SELECT CAST('20 Dec 2018' AS datetimeoffset) AS Result;

Resultat:

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

Eksempel 5 – Konverter til smalldatetime-datatype

Her konverterer vi til smalldatetime datatype:

SELECT CAST('20 Dec 2018' AS smalldatetime) AS Result;

Resultat:

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

Eksempel 6 – Konverter til tidsdatatype

I dette eksempel konverterer vi til tiden datatype:

SELECT CAST('20 Dec 2018' AS time) AS Result;

Resultat:

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

I så fald specificerede vi en dato, men ikke et klokkeslæt, så det kom tilbage som 00:00:00 . Her er et andet eksempel, hvor vi faktisk angiver et tidspunkt:

SELECT CAST('2pm' AS time) AS Result;

Resultat:

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

Men hvis vi tilføjer datoen, får vi en fejl (i modsætning til et tidligere eksempel, hvor vi konverterede til datotid ):

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

Resultat:

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

Så i dette tilfælde skal du konvertere til datetime eller smalldatetime .

Eksempel 7 – Udeladelse af dato

Hvis du udelader datoen, mens du konverterer til datetime eller smalldatetime datatyper, returnerer den 1900-01-01 som datoen:

SELECT CAST('2pm' AS datetime) AS Result;

Resultat:

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

Hvis du foretrækker at bruge CONVERT() funktion, se disse streng til dato/tid CONVERT() eksempler med de samme eksempler som ovenfor.

Også, som nævnt, hvis du får en fejl, mens du forsøger at konvertere en streng til en dato, prøv PARSE() funktion i stedet for. Det vil fungere i nogle tilfælde, hvor CAST() gør det ikke.


  1. PHP - Importer CSV-fil til mysql-database ved hjælp af LOAD DATA INFILE

  2. Sådan fungerer UTC_TIME() i MariaDB

  3. Find databaseforbindelseslækager i din applikation

  4. ACOS() Eksempler i SQL Server