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 xml , duży i sql_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()
.