Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak przekonwertować ciąg na datę/godzinę w SQL Server za pomocą CAST()

W SQL Server możesz użyć CAST() funkcja do konwersji wyrażenia jednego typu danych na inny. Ta funkcja działa prawie tak samo jak CONVERT() funkcji, z wyjątkiem tego, że składnia jest nieco inna (i CAST() nie akceptuje style argument).

Więc jeśli potrzebujesz przekonwertować ciąg na wartość daty/czasu, możesz użyć CONVERT() funkcja lub CAST() funkcja.

A jeśli wystąpi błąd podczas używania tych dwóch funkcji, PARSE() funkcja może być właśnie tym, czego potrzebujesz.

Ten artykuł zawiera przykłady użycia CAST() funkcja.

Składnia

Składnia wygląda tak:

CAST ( expression AS data_type [ ( length ) ] )

Te argumenty są zdefiniowane w następujący sposób:

expression
Dowolne prawidłowe wyrażenie.
data_type
Docelowy typ danych. Obejmuje to xmldużysql_variant . Nie można używać typów danych aliasów.
length
Opcjonalna liczba całkowita, która określa długość docelowego typu danych. Domyślna wartość to 30 .

Przykład 1 – Konwertuj na typ danych daty

W tym przykładzie konwertujemy ciąg na datę typ danych (określamy go za pomocą date jako drugi argument).

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

Wynik:

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

Tak jak w przypadku CONVERT() ciąg musi być w stylu, który można przekonwertować na określony typ danych, w przeciwnym razie otrzymasz błąd:

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

Wynik:

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

Przykład 2 – Konwersja na typ danych data/godzina

W tym przykładzie konwertujemy na data-godzina typ danych:

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

Wynik:

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

Możesz również określić czas wraz z datą:

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

Wynik:

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

Przykład 3 – Konwersja do typu danych datetime2

Tutaj konwertujemy na datetime2 typ danych:

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

Wynik:

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

Przykład 4 – Konwersja na typ danych datatimeoffset

W tym przykładzie konwertujemy na przesunięcie daty i godziny typ danych:

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

Wynik:

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

Przykład 5 – Konwersja do typu danych smalldatetime

Tutaj konwertujemy na smalldatetime typ danych:

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

Wynik:

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

Przykład 6 – Konwersja na typ danych czasu

W tym przykładzie konwertujemy na czas typ danych:

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

Wynik:

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

W takim przypadku podaliśmy datę, ale nie godzinę, więc wróciła jako 00:00:00 . Oto kolejny przykład, w którym faktycznie określamy czas:

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

Wynik:

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

Ale jeśli dodamy datę, otrzymamy błąd (w przeciwieństwie do wcześniejszego przykładu, kiedy przekonwertowaliśmy na data-godzina ):

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

Wynik:

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

Więc w tym przypadku musisz przekonwertować na data i godzina lub smalldatetime .

Przykład 7 – pominięcie daty

Jeśli pominiesz datę podczas konwersji na data-godzina lub smalldatetime typy danych, zwróci 1900-01-01 jako data:

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

Wynik:

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

Jeśli wolisz używać CONVERT() funkcji, zobacz te ciągi do daty/czasu CONVERT() przykłady wykorzystujące te same przykłady co powyżej.

Ponadto, jak wspomniano, jeśli wystąpi błąd podczas próby konwersji ciągu na datę, wypróbuj PARSE() funkcja zamiast. Będzie działać w niektórych przypadkach, gdy CAST() nie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć wszystkie klucze obce, które odwołują się do danej tabeli w SQL Server

  2. Dzielenie ciągu w serwerze sql

  3. przechowuj arabski w bazie danych SQL

  4. Czy klucz obcy może mieć wartość NULL i/lub być duplikatem?

  5. SQL Server DATEPART() vs DATENAME() — jaka jest różnica?