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 100 | mon dd yyyy hh:miAM (or PM) | Default |
1 | 101 | mm/dd/yy | USA |
2 | 102 | yy. mm.dd | ANSI |
3 | 103 | dd/mm/yy | British/French |
4 | 104 | dd.mm.yy | German |
5 | 105 | dd-mm-yy | Italian |
6 | 106 | dd mon yy | |
7 | 107 | Mon dd, yy | |
8 | 108 | hh:mm:ss | |
— | 9 or 109 | mon dd yyyy hh:mi:ss:mmmAM (or PM) |
Default+millisec |
10 | 110 | mm-dd-yy | USA |
11 | 111 | yy/mm/dd | Japan |
12 | 112 | yymmdd | ISO |
— | 13 or 113 | dd mon yyyy hh:mi:ss:mmm (24h) | |
14 | 114 | hh:mi:ss:mmm (24h) | |
— | 20 or 120 | yyyy-mm-dd hh:mi:ss (24h) | |
— | 21 or 121 | yyyy-mm-dd hh:mi:ss. mmm (24h) | |
— | 126 | yyyy-mm-ddThh:mi:ss.mmm (no spaces) |
ISO8601 |
— | 130 | dd mon yyyy hh:mi:ss:mmmAM | Hijiri |
— | 131 | dd/mm/yy hh:mi:ss:mmmAM | Hijiri |
примеров
Следующий скрипт использует функцию 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) Использование
В этом примере используется функция Вот результат: В этом примере функция Вывод выглядит следующим образом: Обратите внимание, что поведение округления и усечения функции В этом примере функция Результат: В этом примере используется Вот результат: Из этого руководства вы узнали, как использовать SQL Server Резюме : в этом руководстве вы узнаете, как преобразовать дату и время в строку в SQL Server с помощью функции Чтобы преобразовать дату и время в строку, вы используете функцию В этом синтаксисе: CONVERT() 9Функция 0006 для преобразования десятичного числа в целое пример
является необязательным. CONVERT()
для преобразования десятичного числа 9,95 в целое число:
SELECT CONVERT(INT, 9,95) результат;
результат
-----------
9
(затронут 1 ряд)
B) Использование функции
CONVERT()
для преобразования десятичного числа в другое десятичное число другой длины пример CONVERT()
используется для преобразования десятичного числа 9,95
в другое десятичное число с нулевой шкалой:
SELECT CAST(9. 95 AS DEC(2,0)) результат;
результат
-----------
10
(затронут 1 ряд)
CONVERT()
такое же, как и у функций CAST()
. C) Использование функции
CONVERT()
для преобразования строки в значение даты и времени пример CONVERT()
используется для преобразования строки '2019-03-14'
в значение даты и времени :
ВЫБЕРИТЕ
CONVERT(DATETIME, '2019-03-14') результат;
результат
-----------------------
2019-03-14 00:00:00. 000
(затронут 1 ряд)
D) Использование функции
CONVERT()
для преобразования значения datetime в строковое значение example CONVERT() 9Функция 0006 для преобразования текущей даты и времени в строку с определенным стилем:
SELECT
CONVERT(VARCHAR, GETDATE(),13) результат;
результат
------------------------------
14 мар 2019 08:59:01:380
(затронут 1 ряд)
CONVERT()
Функция для преобразования значения из одного типа в другой. Преобразование даты и времени в строку в указанном формате в SQL Server
CONVERT()
. Использование функции
CONVERT()
для преобразования даты и времени в строку CONVERT()
следующим образом:
CONVERT(VARCHAR, datetime [style])
первый аргумент представляет строку VARCHAR 9006 тип.
datetime
— это выражение, которое оценивает значение даты или даты и времени, которое вы хотите преобразовать в строку sytle
указывает формат даты. Значение стиля — это число, предопределенное SQL Server. 9Параметр стиля 0005
В следующей таблице показаны допустимый стиль и соответствующий формат даты и времени после преобразования в строку.
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 |