Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

6 начина за конвертиране на низ в стойност на дата/час в SQL Server

Ако трябва да преобразувате низ в стойност за дата/час в 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 ''.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Fuzzy Matching

  2. Връщане на списък с изчислени колони в SQL Server

  3. Ограничение, което позволява само една от двете таблици да препраща към основна таблица

  4. to_sql pyodbc полето за броене е неправилно или синтактична грешка

  5. Какво прави тази заявка за създаване на разделен със запетая списък SQL Server?