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

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

W SQL Server możesz użyć CONVERT() funkcja do konwersji wyrażenia jednego typu danych na inny. Dlatego jeśli potrzebujesz przekonwertować ciąg na format daty/godziny, ta funkcja może pomóc.

Ten artykuł zawiera przykłady demonstrujące jego użycie.

Składnia

Składnia wygląda tak:

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

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 .
style
Wyrażenie całkowite, które określa, w jaki sposób CONVERT() funkcja przetłumaczy wyrażenie . Dla wartości stylu NULL zwracana jest wartość NULL. typ_danych określa zakres.

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 pierwszy argument).

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

Wynik:

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

Oczywiście ciąg musi być w stylu, który można przekonwertować na określony typ danych, w przeciwnym razie pojawi się błąd:

SELECT CONVERT(date, 'Homer') 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 CONVERT(datetime, '20 Dec 2018') AS Result;

Wynik:

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

Możesz również określić godzinę:

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

Wynik:

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

Przykład 3 – Konwersja do typu danych datetime2

W tym przykładzie konwertujemy na datetime2 typ danych:

SELECT CONVERT(datetime2, '20 Dec 2018') 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 CONVERT(datetimeoffset, '20 Dec 2018') AS Result;

Wynik:

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

Przykład 5 – Konwersja do typu danych smalldatetime

W tym przykładzie konwertujemy na smalldatetime typ danych:

SELECT CONVERT(smalldatetime, '20 Dec 2018') 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 CONVERT(time, '20 Dec 2018') 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 CONVERT(time, '2pm') 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 CONVERT(time, '2pm 20 Dec 2018') 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 CONVERT(datetime, '2pm') AS Result;

Wynik:

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

Jeśli pojawi się błąd podczas próby konwersji ciągu na datę, wypróbuj PARSE() funkcja zamiast. Zadziała w niektórych przypadkach, gdy CONVERT() nie.

Możesz również sprawdzić CAST() funkcja, która jest standardowym sposobem konwersji między typami danych ANSI SQL. Oto jak przekonwertować ciąg na datę/godzinę za pomocą CAST() .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacz SQL Server:zrozumienie i alternatywy

  2. Napraw „nazwa profilu jest nieprawidłowa” podczas wysyłania poczty z serwera SQL

  3. Używana wersja SQL Server nie obsługuje danych typu datetime2?

  4. Grupowanie SQL według miesiąca i roku

  5. Czy jest jakaś różnica między IS NULL a =NULL?