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

Как да извлечете или конвертирате времеви данни от низ в SQL Server

Проблем:

Искате да преобразувате низ, съдържащ дата и час, в стойност TIME в SQL Server.

Трябва да преобразуваме низ, съдържащ име, дата и час от седмицата в стойност TIME.

Решение 1:

Ще използваме PARSE() функция. Ето заявката, която бихте написали:

SELECT 
  PARSE('Sunday, 2 February 2020 11:23:11.1134505' AS TIME ) 
  AS time_value;

Ето резултата:

11:23:11.1134505

Дискусия:

Използвайте PARSE() функция за преобразуване на низ, съдържащ име, дата и час от седмицата в типа данни TIME. Тази функция приема низа за преобразуване, ключовата дума AS и нов тип данни (в нашия пример TIME ). Низът трябва да съдържа стойност, която представлява този тип данни. В нашия пример низът 'February 2, 2020 11:23:11.1134505' съхранява времева стойност.

Забележете, че часът е само част от този низ, който също съдържа името на деня от седмицата. Не използвайте CONVERT() или CAST() функции в този случай; те също връщат тип данни TIME, но без деня от седмицата.

Ако използвате говорим език, който е различен от езика на сървъра, включете ключовата дума USING и съответния код на култура. За полски език бихте написали:

SELECT 
  PARSE('Niedziela, 2 lutego 2020 11:23:11.1134505' AS TIME USING 'pl-PL' ) 
  AS time_value;

За повече информация относно стойностите на параметрите на културата вижте официалната документация на SQL Server.

В този случай трябва да използвате PARSE() функция, въпреки че не е с най-добра производителност. Ако работите с низ, представляващ стойност за време, която не съхранявайте допълнителни данни (като името на деня от седмицата), използвайте CASE() функция. Ето един пример.

Решение 2:

SELECT 
  CAST('2 February 2020 11:23:11.1134505' AS TIME ) 
  AS time_value;

Ето резултата:

11:23:11.1134505

Низът, съдържащ датата и часа за преобразуване, трябва да бъде във формата на типа данни за дата и час в T-SQL. Можете да прочетете повече в документацията на SQL Server.

CAST() функцията е стандарт ANSI SQL и нейната производителност е по-добра от CONVERT() или PARSE() .

И накрая, можете също да използвате CONVERT() функция. Вижте следващия пример.

Решение 3:

  SELECT 
  CONVERT(TIME, '2 Feb, 2020 11:23:11.1134505') 
  AS time_value;

Резултатът:

11:23:11.1134505

CONVERT() функцията приема три аргумента:новия тип данни, низа за преобразуване и (по избор) желания формат. Въпреки това, трябва да използвате тази функция само ако трябва да посочите как трябва да бъдат форматирани данните за дата и час, тъй като нейната производителност не е толкова добра, колкото 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. SQL заявка за 7-дневна подвижна средна стойност в SQL Server

  2. Въведение в OPENJSON с примери (SQL Server)

  3. Как да получите списък с таблици без ограничение на първичния ключ в база данни на SQL Server - SQL Server / T-SQL Урок, част 58

  4. Възстановяване на SQL Server 2017

  5. Искам да използвам оператор CASE, за да актуализирам някои записи в sql server 2005