В SQL Server можете да използвате CONVERT()
функция за преобразуване на израз от един тип данни в друг. Следователно, ако трябва да конвертирате низ във формат за дата/час, тази функция може да ви помогне.
Тази статия съдържа примери за демонстриране на нейната употреба.
Синтаксис
Синтаксисът е така:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Тези аргументи се дефинират, както следва:
expression
- Всякакъв валиден израз.
data_type
- Целевият тип данни. Това включва xml , голям и sql_variant . Типовете данни за псевдоним не могат да се използват.
length
- Незадължително цяло число, което определя дължината на целевия тип данни. Стойността по подразбиране е
30
. style
- Цялочислен израз, който указва как
CONVERT()
функцията ще преведе израз . За стойност на стил NULL се връща NULL. тип_данни определя обхвата.
Пример 1 – Преобразуване на тип данни за дата
В този пример преобразуваме низа в дата тип данни (указваме това с помощта на date
като първи аргумент).
SELECT CONVERT(date, '20 Dec 2018') AS Result;
Резултат:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
Разбира се, низът трябва да бъде в стил, който може да се преобразува в посочения тип данни, в противен случай ще получите грешка:
SELECT CONVERT(date, 'Homer') AS Result;
Резултат:
Conversion failed when converting date and/or time from character string.
Пример 2 – Преобразуване в тип данни за дата и час
В този пример преобразуваме в datetime тип данни:
SELECT CONVERT(datetime, '20 Dec 2018') AS Result;
Резултат:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 00:00:00.000 | +-------------------------+
Можете също да посочите часа:
SELECT CONVERT(datetime, '2pm 20 Dec 2018') AS Result;
Резултат:
+-------------------------+ | Result | |-------------------------| | 2018-12-20 14:00:00.000 | +-------------------------+
Пример 3 – Преобразуване в тип данни datetime2
В този пример преобразуваме в datetime2 тип данни:
SELECT CONVERT(datetime2, '20 Dec 2018') AS Result;
Резултат:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
Пример 4 – Преобразуване в тип данни datetimeoffset
В този пример преобразуваме в datetimeoffset тип данни:
SELECT CONVERT(datetimeoffset, '20 Dec 2018') AS Result;
Резултат:
+------------------------------------+ | Result | |------------------------------------| | 2018-12-20 00:00:00.0000000 +00:00 | +------------------------------------+
Пример 5 – Преобразуване в тип данни smalldatetime
В този пример преобразуваме в smalldatetime тип данни:
SELECT CONVERT(smalldatetime, '20 Dec 2018') AS Result;
Резултат:
+---------------------+ | Result | |---------------------| | 2018-12-20 00:00:00 | +---------------------+
Пример 6 – Преобразуване във времеви тип данни
В този пример преобразуваме във време тип данни:
SELECT CONVERT(time, '20 Dec 2018') AS Result;
Резултат:
+----------+ | Result | |----------| | 00:00:00 | +----------+
В този случай посочихме дата, но не и час, така че се върна като 00:00:00
. Ето още един пример, в който всъщност указваме време:
SELECT CONVERT(time, '2pm') AS Result;
Резултат:
+----------+ | Result | |----------| | 14:00:00 | +----------+
Но ако добавим датата, получаваме грешка (за разлика от по-ранен пример, когато преобразувахме в datetime ):
SELECT CONVERT(time, '2pm 20 Dec 2018') AS Result;
Резултат:
Conversion failed when converting date and/or time from character string.
Така че в този случай ще трябва да преобразувате в datetime или smalldatetime .
Пример 7 – Пропускане на датата
Ако пропуснете датата, докато преобразувате в datetime или smalldatetime типове данни, той ще върне 1900-01-01
като дата:
SELECT CONVERT(datetime, '2pm') AS Result;
Резултат:
+-------------------------+ | Result | |-------------------------| | 1900-01-01 14:00:00.000 | +-------------------------+
Ако получите грешка, докато се опитвате да преобразувате низ в дата, опитайте PARSE()
функция вместо това. Ще работи в някои случаи, когато CONVERT()
не.
Може също да искате да проверите CAST()
функция, която е стандартен ANSI SQL начин за преобразуване между типове данни. Ето как да конвертирате низ в дата/час с помощта на CAST()
.