Ако трябва да преобразувате низ в стойност за дата/час в SQL Server, имате редица опции. В тази публикация очертавам шест T-SQL функции, които ви позволяват да правите това.
Шестте функции са:
CAST()CONVERT()PARSE()TRY_CAST()TRY_CONVERT()TRY_PARSE()
По-долу са дадени примери за това как можете да използвате тези функции, за да преобразувате низ в тип данни за дата/час.
Функцията CAST()
В този пример преобразуваме низа в дата тип данни (указваме това с помощта на date като втория аргумент).
SELECT CAST('20 Dec 2018' AS date) AS Result; Резултат:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
За повече примери вижте Как да конвертирате низ в дата/час в SQL Server с помощта на CAST() .
Функцията CONVERT()
Тук правим същото преобразуване като предишния пример, но с CONVERT() функция. Единствената разлика тук е синтаксисът.
SELECT CONVERT(date, '20 Dec 2018') AS Result;
Резултат:
+------------+ | Result | |------------| | 2018-12-20 | +------------+
За повече примери вижте Как да конвертирате низ в дата/час в SQL Server с помощта на CONVERT() .
Функцията PARSE()
В този пример добавям деня от седмицата като част от низа. Причината да правя това е да демонстрирам ползата, която тази функция има пред останалите. Ако предоставите датата в този формат на другите функции, ще получите грешка. Но PARSE() функцията може да се справи с това:
SELECT PARSE('Thursday, 20 Dec 2018' AS datetime2)
AS 'Result'; Резултат:
+-----------------------------+ | Result | |-----------------------------| | 2018-12-20 00:00:00.0000000 | +-----------------------------+
За повече примери вижте Как да конвертирате низ в дата/час в SQL Server с помощта на PARSE() .
Функцията TRY_CAST()
Можете да използвате TRY_CAST() вместо CAST() за осигуряване на по-плавен начин за обработка на грешки. Когато използвате CAST() функция, ако прехвърлянето се провали, тя връща грешка. Въпреки това, ако използвате TRY_CAST() функция вместо това връща NULL в такива случаи.
Ето пример за неуспешно предаване:
SELECT TRY_CAST('Next month' AS date) AS Result; Резултат:
+----------+ | Result | |----------| | NULL | +----------+
Ако предоставим същата стойност на CAST() функция вместо това, ето какво се случва:
SELECT CAST('Next month' AS date) AS Result; Резултат:
Conversion failed when converting date and/or time from character string.
За повече примери вижте CAST срещу TRY_CAST в SQL Server:Каква е разликата?
Функцията TRY_CONVERT()
Можете също да използвате TRY_CONVERT() вместо CONVERT() за по-добра обработка на грешки. Ако CONVERT() функция не успее, връща грешка. Но ако TRY_CONVERT() неуспешно, връща NULL .
Ето пример за неуспешна реализация:
SELECT TRY_CONVERT(date, 'Next month') AS Result;
Резултат:
+----------+ | Result | |----------| | NULL | +----------+
Ако предоставим същата стойност на CONVERT() функция вместо това, ето какво се случва:
SELECT CONVERT(date, 'Next month') AS Result;
Резултат:
Conversion failed when converting date and/or time from character string.
За повече примери вижте CONVERT срещу TRY_CONVERT в SQL Server:Каква е разликата?
Функцията TRY_PARSE()
Можете също да използвате TRY_PARSE() вместо PARSE() за по-добра обработка на грешки. Ако PARSE() функция не успее, връща грешка. Но ако TRY_PARSE() неуспешно, връща NULL .
Ето пример за неуспешна реализация:
SELECT TRY_PARSE('Next month' AS date) AS Result; Резултат:
+----------+ | Result | |----------| | NULL | +----------+
Ако предоставим същата стойност на PARSE() функция вместо това, ето какво се случва:
SELECT PARSE('Next month' AS date) AS Result; Резултат:
Error converting string value 'Next month' into data type date using culture ''.