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

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

В 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() .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlServer:Неуспешно влизане за потребител

  2. Основи за вътрешно присъединяване на SQL Server с примери

  3. Как да мигрирате задания на SQL сървър от един екземпляр на SQL сървър към друг

  4. Топ 5 функции, които вашата платформа за мониторинг на ефективността на базата данни на SQL Server трябва да предостави

  5. Транспонирайте набор от редове като колони в SQL Server 2000