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

Как да конвертирате низ в дата/час в SQL Server с помощта на CAST()

В SQL Server можете да използвате CAST() функция за преобразуване на израз от един тип данни в друг. Тази функция работи почти по същия начин като CONVERT() функция, с изключение на това, че синтаксисът е малко по-различен (и CAST() не приема style аргумент).

Така че, ако трябва да конвертирате низ в стойност за дата/час, можете да използвате CONVERT() функция или CAST() функция.

И ако получите грешка, докато използвате тези две функции, PARSE() функцията може да е точно това, от което се нуждаете.

Тази статия съдържа примери за използване на CAST() функция.

Синтаксис

Синтаксисът е така:

CAST ( expression AS data_type [ ( length ) ] )

Тези аргументи се дефинират, както следва:

expression
Всякакъв валиден израз.
data_type
Целевият тип данни. Това включва xmlголям и sql_variant . Типовете данни за псевдоним не могат да се използват.
length
Незадължително цяло число, което определя дължината на целевия тип данни. Стойността по подразбиране е 30 .

Пример 1 – Преобразуване на тип данни за дата

В този пример преобразуваме низа в дата тип данни (указваме това с помощта на date като втория аргумент).

SELECT CAST('20 Dec 2018' AS date) AS Result;

Резултат:

+------------+
| Result     |
|------------|
| 2018-12-20 |
+------------+

Точно както с CONVERT() низът трябва да е в стил, който може да се преобразува в посочения тип данни, в противен случай ще получите грешка:

SELECT CAST('Homer' AS date) AS Result;

Резултат:

Conversion failed when converting date and/or time from character string.

Пример 2 – Преобразуване в тип данни за дата и час

В този пример преобразуваме в datetime тип данни:

SELECT CAST('20 Dec 2018' AS datetime) AS Result;

Резултат:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 00:00:00.000 |
+-------------------------+

Можете също да посочите часа заедно с датата:

SELECT CAST('2pm 20 Dec 2018' AS datetime) AS Result;

Резултат:

+-------------------------+
| Result                  |
|-------------------------|
| 2018-12-20 14:00:00.000 |
+-------------------------+

Пример 3 – Преобразуване в тип данни datetime2

Тук преобразуваме в datetime2 тип данни:

SELECT CAST('20 Dec 2018' AS datetime2) AS Result;

Резултат:

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-12-20 00:00:00.0000000 |
+-----------------------------+

Пример 4 – Преобразуване в тип данни datetimeoffset

В този пример преобразуваме в datetimeoffset тип данни:

SELECT CAST('20 Dec 2018' AS datetimeoffset) AS Result;

Резултат:

+------------------------------------+
| Result                             |
|------------------------------------|
| 2018-12-20 00:00:00.0000000 +00:00 |
+------------------------------------+

Пример 5 – Преобразуване в тип данни smalldatetime

Тук преобразуваме в smalldatetime тип данни:

SELECT CAST('20 Dec 2018' AS smalldatetime) AS Result;

Резултат:

+---------------------+
| Result              |
|---------------------|
| 2018-12-20 00:00:00 |
+---------------------+

Пример 6 – Преобразуване във времеви тип данни

В този пример преобразуваме във време тип данни:

SELECT CAST('20 Dec 2018' AS time) AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 00:00:00 |
+----------+

В този случай посочихме дата, но не и час, така че се върна като 00:00:00 . Ето още един пример, в който всъщност указваме време:

SELECT CAST('2pm' AS time) AS Result;

Резултат:

+----------+
| Result   |
|----------|
| 14:00:00 |
+----------+

Но ако добавим датата, получаваме грешка (за разлика от по-ранен пример, когато преобразувахме в datetime ):

SELECT CAST('2pm 20 Dec 2018' AS time) AS Result;

Резултат:

Conversion failed when converting date and/or time from character string.

Така че в този случай ще трябва да преобразувате в datetime или smalldatetime .

Пример 7 – Пропускане на датата

Ако пропуснете датата, докато преобразувате в datetime или smalldatetime типове данни, той ще върне 1900-01-01 като дата:

SELECT CAST('2pm' AS datetime) AS Result;

Резултат:

+-------------------------+
| Result                  |
|-------------------------|
| 1900-01-01 14:00:00.000 |
+-------------------------+

Ако предпочитате да използвате CONVERT() функция, вижте тези низове за дата/час CONVERT() примери, използващи същите примери като по-горе.

Също така, както споменахме, ако получите грешка, докато се опитвате да преобразувате низ в дата, опитайте PARSE() функция вместо това. Ще работи в някои случаи, когато 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 Server – RTRIM()

  2. Определете размера на реда за таблицата

  3. Какви са разликите между клъстериран и неклъстериран индекс?

  4. SQL Server (localdb)\v11.0 е обяснено

  5. Създайте HTML таблица с SQL ЗА XML