Convert функция sql: Функции CAST и CONVERT (Transact-SQL) — SQL Server

Содержание

Функция SQL CONVERT сервера ()

Функция SQL Server DATEDIFF (): Предыдущий

SQL Дата сервера Функции


Определение и использование

Функция CONVERT () является общая функция для преобразования даты в новый тип данных.

Функция CONVERT () может отображать данные о дате / времени в различных форматах.

грамматика


CONVERT(data_type(length),expression,style)





描述
data_type(length)规定目标数据类型(带有可选的长度)。
expression规定需要转换的值。
style规定日期/时间的输出格式。

В следующей таблице приведены значения стиля из DateTime или smalldatetime для символьных данных:
























(世纪 yy)


(世纪 yyyy)
输入/输出标准
0 or 100mon dd yyyy hh:miAM (or PM)Default
1101mm/dd/yyUSA
2102yy. mm.ddANSI
3103dd/mm/yyBritish/French
4104dd.mm.yyGerman
5105dd-mm-yyItalian
6106dd mon yy
7107Mon dd, yy
8108hh:mm:ss
9 or 109mon dd yyyy hh:mi:ss:mmmAM (or PM)
Default+millisec
10110mm-dd-yyUSA
11111yy/mm/ddJapan
12112yymmddISO
13 or 113dd mon yyyy hh:mi:ss:mmm (24h)
14114hh:mi:ss:mmm (24h)
20 or 120yyyy-mm-dd hh:mi:ss (24h)
21 or 121yyyy-mm-dd hh:mi:ss. mmm (24h)
126yyyy-mm-ddThh:mi:ss.mmm (no spaces)
ISO8601
130dd mon yyyy hh:mi:ss:mmmAMHijiri
131dd/mm/yy hh:mi:ss:mmmAMHijiri


примеров

Следующий скрипт использует функцию CONVERT () для отображения другого формата. Мы будем использовать функцию GETDATE (), чтобы получить текущую дату / время:


CONVERT(VARCHAR(19),GETDATE())

CONVERT(VARCHAR(10),GETDATE(),10)

CONVERT(VARCHAR(10),GETDATE(),110)

CONVERT(VARCHAR(11),GETDATE(),6)

CONVERT(VARCHAR(11),GETDATE(),106)

CONVERT(VARCHAR(24),GETDATE(),113)

Результаты следующие:


Nov 04 2011 11:45 PM

11-04-11

11-04-2011

04 Nov 11

04 Nov 2011

04 Nov 2011 11:45:34:243


SQL Дата сервера Функции

Функция SQL Server DATEDIFF (): Предыдущий

MS SQL Server.

Преобразование из ASCII в HEX и обратно

    Попросили меня написать скрипт, который конвертировал данные из одной таблицы в другую. При этом одно из текстовых полей нужно «привести к верхнему регистру, взять символы в обратном порядке и преобразовать их из ASCII в HEX». Например, строка «XYZ» должна превратиться в «5A5958». Привести к верхнему регистру и взять символы в обратном порядке – это делают встроенные строковые функции UPPER и REVERSE. Но, преобразование из ASCII в HEX поставило меня в тупик. Гугл мне в помощь!
    Поиск дал множество самописных функций для преобразования символов из ASCII в HEX. И когда я уже хотел выбрать одну из них, на одном из форумов я натолкнулся на запрос:

select CAST('ZYX' as varbinary)

Он возвращает 0x5A5958. Простая, но хорошая идея. Остается двоичные данные преобразовать в строку и избавиться от «0x». Использование в запросе CAST натолкнуло меня на мысль проверить, как работает с varbinary функция CONVER, которая имеет дополнительный параметр конвертации – «style»:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Если конвертация производится между типами данных binary/varbinary и char/varchar, то параметр style может принимать значение от 0 до 2.
    По умолчанию параметр style равен 0. В этом режиме функция CONVER преобразует символы ASCII в двоичные данные либо двоичные данные в символы ASCII. Запрос

select CONVERT(varbinary(max), 'ZYX')

аналогично CAST, преобразует строку в двоичные данные и вернет 0x5A5958. Соответственно запрос

select CONVERT(varchar(max), 0x5A5958)

произведет обратное преобразование двоичных данных в строку «ZYX».
    Если параметр style равен 1 или 2, то функция CONVER преобразует binary/varbinary в char/varchar и наоборот. Значение параметра style указывает на наличие символов 0x слева: 1 – символы есть, 2 – символов нет.
Преобразование строки в двоичные данные:

Преобразование двоичных данных в строку:

Обратите внимание на строку 2 в результатах – это то, что надо мне по заданию. Значит для того, чтобы представить ASCII-символы в шестнадцатеричном виде необходимо преобразовать строку в двоичные данные с параметром style равным 0, а полученный результат преобразовать в строку с параметром style равным 2:

CONVERT(varchar(max), CONVERT(varbinary(max), 'ZYX'), 2)

Для обратного преобразования строки, записанной в шестнадцатеричном виде в ASCII, необходимо преобразовать строку в двоичные данные с параметром style равным 2, а полученный результат преобразовать в строку с параметром style равным 0:

CONVERT(varchar(max), CONVERT(varbinary(max), '5A5958', 2))

    Для полноты освещения вопроса стоит упомянуть еще о недокументированной функции MS SQL Server для преобразования двоичных данных в строку:

create function sys. fn_varbintohexsubstring
(
   @fsetprefix bit = 1    -- append '0x' to the output
  ,@pbinin varbinary(max) -- input binary stream
  ,@startoffset int = 1   -- starting offset 
  ,@cbytesin int = 0      -- length of input to consider, 0 means total length
)
returns nvarchar(max)

Что бы записать строку шестнадцатеричными символами без символов 0x, как в примере с использованием функции CONVERT, вызовем fn_varbintohexsubstring с параметром @fsetprefix равным 0 и преобразуем результат к верхнему регистру:

UPPER(sys.fn_varbintohexsubstring(0, CONVERT(varbinary(max), 'ZYX'), 1, 0))

Функция

SQL Server CONVERT, поясняемая практическими примерами

Резюме : в этом руководстве вы узнаете, как использовать функцию SQL Server CONVERT() для преобразования значения одного типа в другой.

Введение в SQL Server

Функция CONVERT()

Функция CONVERT() позволяет преобразовать значение одного типа в другой.

Ниже показан синтаксис функции CONVERT() :

 

ПРЕОБРАЗОВАТЬ (тип_цели [(длина)], выражение [ стиль])

Язык кода: SQL (язык структурированных запросов) (sql)

В этом синтаксисе:

  • target_type — целевой тип данных, в который вы хотите преобразовать выражение. Он включает INT , BIT , SQL_VARIANT и т. д. Обратите внимание, что это не может быть псевдонимом типа данных.
  • длина — целое число, указывающее длину целевого типа. длина является необязательной и по умолчанию равна 30.
  • выражение является допустимым выражением любого типа, которое будет преобразовано.
  • стиль — это необязательное целое число, определяющее, как функция CONVERT() будет преобразовывать выражение. Если стиль равен NULL, функция CONVERT() вернет NULL.

Функция CONVERT() возвращает значение выражения , переведенное в target_type с указанным стилем .

Функция CONVERT() аналогична функции CAST() . Однако это специфично для SQL Server. Напротив, функция CAST() является частью функций ANSI-SQL, которые широко доступны во многих других продуктах баз данных.

SQL Server

CONVERT() примеры функций

Давайте рассмотрим несколько примеров использования функции CONVERT() .

A) Использование

CONVERT() 9Функция 0006 для преобразования десятичного числа в целое пример

В этом примере используется функция CONVERT() для преобразования десятичного числа 9,95 в целое число:

 

SELECT CONVERT(INT, 9,95) результат;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

результат ----------- 9 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

B) Использование функции

CONVERT() для преобразования десятичного числа в другое десятичное число другой длины пример

В этом примере функция CONVERT() используется для преобразования десятичного числа 9,95 в другое десятичное число с нулевой шкалой:

 

SELECT CAST(9. 95 AS DEC(2,0)) результат;

Язык кода: SQL (язык структурированных запросов) (sql)

Вывод выглядит следующим образом:

 

результат ----------- 10 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

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

C) Использование функции

CONVERT() для преобразования строки в значение даты и времени пример

В этом примере функция CONVERT() используется для преобразования строки '2019-03-14' в значение даты и времени :

 

ВЫБЕРИТЕ CONVERT(DATETIME, '2019-03-14') результат;

Язык кода: SQL (язык структурированных запросов) (sql)

Результат:

 

результат ----------------------- 2019-03-14 00:00:00. 000 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

D) Использование функции

CONVERT() для преобразования значения datetime в строковое значение example

В этом примере используется CONVERT() 9Функция 0006 для преобразования текущей даты и времени в строку с определенным стилем:

 

SELECT CONVERT(VARCHAR, GETDATE(),13) результат;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

результат ------------------------------ 14 мар 2019 08:59:01:380 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

Из этого руководства вы узнали, как использовать SQL Server CONVERT() Функция для преобразования значения из одного типа в другой.

Преобразование даты и времени в строку в указанном формате в SQL Server

Резюме : в этом руководстве вы узнаете, как преобразовать дату и время в строку в SQL Server с помощью функции CONVERT() .

Использование функции

CONVERT() для преобразования даты и времени в строку

Чтобы преобразовать дату и время в строку, вы используете функцию CONVERT() следующим образом:

 

CONVERT(VARCHAR, datetime [style])

Язык кода: SQL (язык структурированных запросов) (sql)

В этом синтаксисе:

  • первый аргумент представляет строку VARCHAR 9006 тип.
  • datetime — это выражение, которое оценивает значение даты или даты и времени, которое вы хотите преобразовать в строку
  • sytle указывает формат даты. Значение стиля — это число, предопределенное SQL Server. 9Параметр стиля 0005 является необязательным.

В следующей таблице показаны допустимый стиль и соответствующий формат даты и времени после преобразования в строку.

9

9

9

8 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9058 9. строка в формате mon dd yyyy hh:miAM (или PM) 9Пример формата 0006

 

DECLARE @dt DATETIME = '2019-12-31 14:43:35.863'; ВЫБРАТЬ ПРЕОБРАЗОВАТЬ(VARCHAR(20),@dt,0) s1, CONVERT(VARCHAR(20),@dt,100) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 s2 -------------------- -------------------- 31 дек 2019 14:43 31 дек 2019 14:43 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

2) Преобразование даты и времени в строку в формате

мм/дд/гг и мм/дд/гггг Пример

 

DECLARE @dt DATETIME = '2019-12-31 14:43:35. 863'35; ВЫБРАТЬ ПРЕОБРАЗОВАТЬ(VARCHAR(10),@dt,1) s1, CONVERT(VARCHAR(10),@dt,101) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 s2 ---------- ---------- 31.12.19 31.12.2019 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

3) Преобразование даты и времени в строку в формате

mon dd yyyy hh:miAM (или PM) пример формата

 

DECLARE @dt DATETIME9 = '20101 12-31 14:43:35,863'; ВЫБРАТЬ ПРЕОБРАЗОВАТЬ(VARCHAR(10),@dt,3) s1, CONVERT(VARCHAR(10),@dt,103) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 s2 ---------- ---------- 31. 12.1931.12.2019 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

4) Преобразование даты и времени в строку в формате

dd.mm.yy и dd.mm.yyyy пример форматов

  DETECLTIME @ 

900 = '2019-12-31 14:43:35.863'; ВЫБРАТЬ ПРЕОБРАЗОВАТЬ(VARCHAR(10),@dt,4) s1, CONVERT(VARCHAR(10),@dt,104) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

с1 с2 ---------- ---------- 31.12.19 31.12.2019 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

5) Преобразование даты и времени в строку в формате

dd-mm-yy dd-mm-yyyy пример форматов

  DECLARE @dt '2019-12-31 14:43:35. 863';
ВЫБРАТЬ
    ПРЕОБРАЗОВАТЬ(VARCHAR(10),@dt,5) s1,
    CONVERT(VARCHAR(10),@dt,105) s2;
  

Язык кода: SQL (язык структурированных запросов) (sql)

Вот вывод:

 

с1 с2 ---------- ---------- 31-12-19 31-12-2019 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

6) Преобразование даты и времени в строку в формате

dd mon yy dd mon yyyy пример форматов

  DECLATE9021 

-31 14:43:35,863'; ВЫБРАТЬ ПРЕОБРАЗОВАТЬ(VARCHAR(10), @dt, 6) s1, CONVERT(VARCHAR(10), @dt, 106) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 s2 ---------- ---------- 31 дек 19 31 дек 201 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

7) Преобразование даты и времени в строку в

Mon dd, yy Mon dd, yyyy -12-31 14:43:35,863';
ВЫБЕРИТЕ ПРЕОБРАЗОВАТЬ (VARCHAR (10), @dt, 7) s1,
CONVERT(VARCHAR(10), @dt, 107) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 s2 ---------- ---------- 31, 19 декабря 31, 20 декабря (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

8) Преобразование даты и времени в строку в формате

чч:ми:сс пример

 

DECLARE @dt DATETIME= '2019-12-12 :43:35,863'; SELECT CONVERT(VARCHAR(10), @dt, 108) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 ---------- 14:43:35 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

9) Преобразование даты и времени в строку в формате

mon dd yyyy hh:mi:ss:mmmAM (или PM) пример формата

 

DE DATETIME= '2019-12-31 14:43:35. 863'; ВЫБРАТЬ CONVERT(VARCHAR(30), @dt, 109) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот результат:

 

s1 ------------------------------ 31 декабря 2019 г., 14:43:35:863 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

10) Преобразование даты и времени в строку в формате

мм-дд-гг и мм-дд-гггг

 

9000dt DECLARE TIME @ = '2019-12-31 14:43:35.863'; ВЫБЕРИТЕ ПРЕОБРАЗОВАТЬ (VARCHAR (10), @dt, 10) s1, CONVERT(VARCHAR(10), @dt, 110) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 s2 ---------- ---------- 31-12-19 31-12-2019 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

11) Преобразование даты и времени в строку в формате

гг/мм/дд и гггг/мм/дд = '2019-12-31 14:43:35. 863';
ВЫБЕРИТЕ ПРЕОБРАЗОВАТЬ (VARCHAR (10), @dt, 11) s1,
CONVERT(VARCHAR(10), @dt, 111) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 s2 ---------- ---------- 19/12/31 2019/12/31 (затронут 1 ряд)

Code language: SQL (Structured Query Language) (sql)

12) Convert datetime to string in

yymmdd and yyyymmdd format example

  

DECLARE @dt DATETIME= '2019-12-31 14 :43:35,863'; ВЫБЕРИТЕ ПРЕОБРАЗОВАТЬ (VARCHAR (10), @dt, 12) s1, CONVERT(VARCHAR(10), @dt, 112) s2;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 s2 ---------- ---------- 191231 20191231 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

13) Преобразование даты и времени в строку в формате

dd mon yyyy hh:mi:ss:mmm(24h) = '2019-12-31 14:43:35. 863';
SELECT CONVERT(VARCHAR(10), @dt, 113) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 ---------- 31 декабря 201 г. (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

14) Преобразование даты и времени в строку в формате

hh:mi:ss:mmm(24h) пример формата

 

DECLARE @'dt2 DATETIME -12-31 14:43:35,863'; SELECT CONVERT(VARCHAR(20), @dt, 114) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 -------------------- 14:43:35:863 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

15) Преобразование даты и времени в строку в формате

гггг-мм-дд чч:ми:сс(24ч) Пример формата

 

DATETIME @dt DECLARE @dt = '2019-12-31 14:43:35. 863'; SELECT CONVERT(VARCHAR(20), @dt, 120) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 -------------------- 2019-12-31 14:43:35 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

16) Преобразование даты и времени в строку в формате

гггг-мм-дд чч:ми:сс.ммм(24ч) Пример формата

 

DECL @DECL dt DATETIME = '2019-12-31 14:43:35.863'; SELECT CONVERT(VARCHAR(30), @dt, 121) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 ------------------------------ 2019-12-31 14:43:35. 863 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

17) Преобразование даты и времени в строку в формате

yyyy-mm-ddThh:mi:ss.mmm пример формата

 

DATETIME='dt 2019-12-31 14:43:35.863'; SELECT CONVERT(VARCHAR(25), @dt, 126) s1;

Язык кода: SQL (язык структурированных запросов) (sql)

Вот набор результатов:

 

s1 ------------------------- 2019-12-31T14:43:35.863 (затронут 1 ряд)

Язык кода: SQL (язык структурированных запросов) (sql)

18) Преобразование даты и времени в строку в формате

yyyy-mm-ddThh:mi:ss.

Imacros | Все права защищены © 2021
Without century (yy) With century (yyyy) Standard Format
0 or 100 Default for datetime and smalldatetime mon dd гггг чч:миAM (или PM)
1 101 U.S. 1 = mm/dd/yy
101 = mm/dd/yyyy
2 102 ANSI 2 = yy.mm.dd
102 = yyyy.mm.dd
3 103 British/French 3 = DD/MM/YY
8 =
=
=
=
= 9028 = 9028 = 9028.

4 104 German 4 = dd.mm.yy
104 = dd.mm.yyyy
5 105 Italian 5 = dd-mm-yy
105 = dd-mm -yyyy
6 106 6 = dd mon yy
106 = dd mon yyyy
7 107 7 = Mon дд, гг
107 = пн дд, гггг
8 108 hh:mi:ss
9 or 109 Default + milliseconds mon dd yyyy hh:mi:ss :mmmAM (or PM)
10 110 USA 10 = mm-dd-yy
110 = mm-dd-yyyy
11 111 ЯПОНИЯ 11 = yy/mm/dd
111 = yyyy/mm/dd
12 112 ISO 12 = yymmdd
112 = yyyymmdd
13 или 113 Европа по умолчанию + миллисекунды DD Mon Yyyy HH: MM: MMM (24H)
14
140004
. (круглосуточно)
20 or 120 ODBC canonical yyyy-mm-dd hh:mi:ss(24h)
21 or 121 ODBC canonical (with milliseconds) по умолчанию для времени, даты, datetime2 и datetimeoffset гггг-мм-дд чч:ми:сс.ммм(24ч)
126 ISO8601

-Th сс.ммм (без пробелов)
127 ISO8601 with time zone Z. yyyy-mm-ddThh:mi:ss.mmmZ (no spaces)
130 Hijri dd mon yyyy hh:mi : SS: MMMAM
- 131 HIJRI DD/MM/YYYY HH: MI: SS: MMMAM