Convert функция sql: SQL Server функция CONVERT — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite
Содержание
Чем заменить Convert?
← →
ShotGuN ©
(2005-06-07 09:50)
[0]
Нужно заменить функцию Convert на что-нибудь, что работает также в MS Access. Дело в том, что основное мое приложение работает под MS SQL Server, но пришлось делать копию под MS Access. В некоторых местах использую Convert для преобразования типов данных (например Int в Datetime)… В Аксезе выдается ошибка, что типа такая функция не найдена…
Помогите кто чем может …. плиииииииизззз
← →
Anatoly Podgoretsky ©
(2005-06-07 09:55)
[1]
В справке описаны все существующие функции, если у тебя русский офис, то еще и по русски.
← →
ShotGuN ©
(2005-06-07 09:58)
[2]
Офис не русский. ..
не можешь подсказать какую-либо конкретную функцию?
← →
Anatoly Podgoretsky ©
(2005-06-07 09:59)
[3]
А мне как и тебе лень лезть в справку.
← →
ShotGuN ©
(2005-06-07 10:04)
[4]
BYTE CONTAINS
CASCADE CONVERT
CATALOG Count
из списка «SQL Reserved Words «…. Но ведь не работает собака… )))
← →
ShotGuN ©
(2005-06-07 10:09)
[5]
ничего не могу найти…
не поможете???
← →
msguns ©
(2005-06-07 10:16)
[6]
Справка по акцесу написана безобразно. В частности, найти перечнь функций я, например, не смог
← →
ShotGuN ©
(2005-06-07 10:18)
[7]
В офис онлайн есть перечень функций. Но там и намека нет на такую, которая например могла Memo перевести в String.
Помогитееееееееее…. люююююююююддддддддиииииииииии
← →
msguns ©
(2005-06-07 10:23)
[8]
Поищи в Jetsql40.chm
← →
ShotGuN ©
(2005-06-07 10:31)
[9]
был я там )))
ничего …
← →
Anatoly Podgoretsky ©
(2005-06-07 10:42)
[10]
ShotGuN © (07. 06.05 10:31) [9]
Ну раз ничего, то откуда взяться?
Может стоит прислушаться к Микрософт и поставить локальный SQL Server? Ресурсов он есть поменее Акцесс
← →
DSKalugin ©
(2005-06-07 10:45)
[11]
А стандартная функция SQL приведения типов там естьCAST()?
← →
msguns ©
(2005-06-07 10:47)
[12]
>Anatoly Podgoretsky © (07.06.05 10:42) [10]
>Может стоит прислушаться к Микрософт и поставить локальный SQL Server?
Анатолий, это не решение для программ, написанных для массового тиражирования, например, в бюджетной сфере.
← →
Anatoly Podgoretsky ©
(2005-06-07 11:29)
[13]
DSKalugin © (07. 06.05 10:45) [11]
Нет
msguns © (07.06.05 10:47) [12]
Почему это нормальное решение для бюджетных программ, поскольку бесплатно!!! Сама инсталяция сделана как раз в массовом варианте, инсталируется сервер, создаются базы, в них загоняются данные, все на уровне обычных текстовых скриптов, кроме бинарника сервера.
← →
msguns ©
(2005-06-07 11:42)
[14]
>Anatoly Podgoretsky © (07.06.05 11:29) [13]
Анатольй, Вы когда-нибудь ездили в какую-нибудь Талалаевку или Брехаловку ? И видели, какие там стоят компы и кто на них работает ? А им сервер, да ?
← →
sniknik ©
(2005-06-07 11:47)
[15]
> например Int в Datetime
CDate(Int(Date())+0.25) — сегодня 6 часов.
VBLR6. CHM
← →
sniknik ©
(2005-06-07 11:50)
[16]
> А им сервер, да ?
а почему нет? он же локальный, локальный firebird почемуто никто не стесняется использовать, а тут какието комплексы…
← →
msguns ©
(2005-06-07 11:56)
[17]
>sniknik © (07.06.05 11:50) [16]
>а почему нет? он же локальный, локальный firebird почемуто никто не стесняется использовать, а тут какието комплексы…
А потому, что ни в Талалевке, ни в Брехаловке у меня нет полюбовницы-вдовушки, чтобы радостно туда ездить с завидным постоянством. И причем здесь комплексы ? 😉
← →
sniknik ©
(2005-06-07 12:56)
[18]
> И причем здесь комплексы ? 😉
разници никакой, в обслуживании даже в чемто проще, ставится элементарно (либо из твоего сетапа либо руками).
едить если нормально написана именно твоя прога(предусматрены «подводные камни», типа превышение 2гигабайтного лимита на базу) не надо.
и т.д.
а если не видно разници то почему одному из них отдают предпочтение? кроме комплексов испытываемых к другому причин не вижу.
← →
ShotGuN ©
(2005-06-07 13:10)
[19]
Мне нужен именно Акцез.
Никто ничего не может посоветовать???
← →
Anatoly Podgoretsky ©
(2005-06-07 13:13)
[20]
msguns © (07.06.05 11:56) [17]
Зачем ездить?
Поставил и пусть работает, даже с бекапами не надо заморачиваться все работает автоматически.
sniknik © (07.06.05 12:56) [18]
Так такое же ограничение в 2 гб и на Акцесс, только его быстро там достигнешь без обслуживания, у многих ли ты видел CompactDatabase внутри программы.
Я уж молчу про развитость диалекта, серверной и клиентской поддержки. Вполне достояный кандидат, наряду с другими локальными серверами.
← →
ShotGuN ©
(2005-06-07 13:33)
[21]
Слушайте народ перестаньте спорить о том, что лучше, а что нет!!!
Мне нужен конкретно АКЦЕЗ!!! и точка ))))
Помочь можете, чем-нибудь???
Повторяю вопрос — можно-ли чем-либо заменить convert????
← →
Polevi ©
(2005-06-07 13:42)
[22]
напиши в базе в public секции свою ф-ию Convert и используй на здоровье
← →
P.N.P. ©
(2005-06-07 13:44)
[23]
>ShotGuN © (07. 06.05 13:33) [21]
В Access 2k3 есть convert
из справки:
CONVERT( ) Преобразует данные от одного типа данных к другому. Используется для форматирования данных или для преобразования содержимого столбца данных, используемого в аргументе функции, которая требует другой тип данных. SELECT "Hired: " + CONVERT(char (11), hire_date)
FROM employee
Отображает дату с предшествующей подписью; функция CONVERT( ) создает из даты строковое значение, которое объединяется со строковым литералом.
Может пользуешь как-то не так?
← →
ShotGuN ©
(2005-06-07 13:55)
[24]
> Может пользуешь как-то не так?
Честное пионерское использую как-надо… но этот нехороший Access говорит «undefined function «convert» in expression»…
← →
sniknik ©
(2005-06-07 14:07)
[25]
> Помочь можете, чем-нибудь???
отряд не заметил потери бойца. .. помощь была… незамечена. ;о))
← →
ShotGuN ©
(2005-06-07 14:30)
[26]
> отряд не заметил потери бойца… помощь была… незамечена.
> ;о))
Переведи )))
← →
sniknik ©
(2005-06-07 14:45)
[27]
первый мой пост, и пример и файл справки. чего еще?
← →
Silver Alex ©
(2005-06-07 14:48)
[28]
Удалено модератором
Примечание: Как только начинаются наежды на отвечающих, так сразу лишаешься этой возможности, а при повторения и большего
← →
ShotGuN ©
(2005-06-07 14:58)
[29]
> посмотри DSKalugin © (07. 06.05 10:45) [11]
Дело в том, что эта сволочь Акцез и на Cast говорит undefined function
← →
msguns ©
(2005-06-07 15:21)
[30]
Где запускаешь (отлаживаешь запросы — в акцесе ?
← →
sniknik ©
(2005-06-07 15:32)
[31]
> Где запускаешь (отлаживаешь запросы — в акцесе ?
а какая в этом случае разница?
> забыл, тут же все мастера советовать про хелпы да про книги умные
дай человеку рыбу и ты накормиш его на один день, научи рыбачить и накормиш его на всю жизнь… © сами знаете чей ;о))
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()
:
CONVERT (target_type [(длина)], выражение [ стиль]) Язык кода: 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) Использование
В этом примере функция Вот результат: В этом примере функция Вывод выглядит следующим образом: Обратите внимание, что поведение округления и усечения 9Функция 0005 CONVERT() 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)
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 в строковое значение пример
В этом примере для преобразования используется функция CONVERT()
текущую дату и время в строку с определенным стилем:
SELECT CONVERT(VARCHAR, GETDATE(),13) результат; Язык кода: SQL (язык структурированных запросов) (sql)
Вот результат:
результат ------------------------------ 14 мар 2019 08:59:01:380 (затронут 1 ряд) Язык кода: SQL (язык структурированных запросов) (sql)
В этом руководстве вы узнали, как использовать функцию SQL Server CONVERT()
для преобразования значения из одного типа в другой.
Использование форматов и функций даты SQL CONVERT — Управление базой данных — Блоги
В этой статье мы рассмотрим использование различных форматов даты SQL CONVERT в SQL Server.
Интерпретация даты различается в разных странах. Предположим, у вас есть глобальная база данных SQL Server с таблицей, содержащей определенный формат даты. Например, у него есть столбец даты со значением 05.01.2020.
Как вы это понимаете? Давайте посмотрим на следующие интерпретации в разных странах.
- США: 5 января 2020 г. (стандартный формат — мм/дд/гггг)
- Европа: 1 мая 2020 г. (стандартный формат — дд/мм/гггг)
Кроме того, в других странах используются другие форматы даты:
- Турция: дд.мм.гггг
- Индия: дд-мм-гггг
- Болгария: гггг-м-д
- Венгрия: гггг.мм.дд.
Дополнительную информацию о форматах даты по странам можно найти в Википедии.
Помимо этого, иногда мы также хотим включить метку времени вместе с датами. Вот несколько примеров:
- 05.01.2020 10:00
- 05.00.2020 14:00
- 05.00.2020 14:00
- 05.01.2020 02:00:55
Невозможно хранить даты в таблице SQL Server в разных форматах, поэтому нам нужен способ преобразования форматов дат. Давайте рассмотрим различные методы формата даты SQL CONVERT.
Функция даты SQL CONVERT
Как правило, специалисты по базам данных используют функцию даты SQL CONVERT для преобразования дат в заданный и согласованный формат. Это применяет коды стилей для определенных выходных дат.
Синтаксис функции CONVERT():
CONVERT(datatype, datetime [style])
В приведенном ниже SQL-запросе мы преобразуем дату и время в два формата с помощью функции CONVERT().
- формат мм/дд/гг: код стиля 1
- формат мм/дд/гггг: код стиля 101
DECLARE @Inputdate datetime = '2019-12-31 14:43:35.863'; Выберите CONVERT(varchar,@Inputdate,1) как [мм/дд/гг], CONVERT(varchar,@Inputdate,101) as [мм/дд/гггг]
Точно так же мы можем указать различные коды стилей, чтобы вы могли конвертировать даты в требуемый формат.
ВЫБЕРИТЕ '0' КАК [Код стиля], «Формат по умолчанию» AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 0) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '1' КАК [Код стиля], 'США - мм/дд/гг' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 1) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '2' КАК [Код стиля], 'ANSI - дд.мм.гг' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 2) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '3' КАК [Код стиля], 'Британский и французский - дд/мм/гг' AS [стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 3) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '4' КАК [Код стиля], 'Немецкий - дд.мм.гг' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 4) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '5' КАК [Код стиля], 'Итальянский - дд-мм-гг' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 5) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '6' КАК [Код стиля], 'Сокращенное название месяца -dd mon yy' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 6) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '7' КАК [Код стиля], 'Сокращенное название месяца - mon dd, yy' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 7) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '8' КАК [Код стиля], '24-часовое время -чч:мм:сс' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 8) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '9' КАК [Код стиля], 'По умолчанию + миллисекунды - mon dd yyyy hh:mm:ss:mmmAM (или PM)' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 9) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '10' КАК [Код стиля], 'США - мм-дд-гг' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 10) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '11' КАК [Код стиля], 'Япония -гг/мм/дд' AS [стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 11) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '12' КАК [Код стиля], 'Формат ISO -ггммдд' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 12) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '13' КАК [Код стиля], 'Европа по умолчанию + миллисекунды -dd mon yyyy hh:mm:ss:mmm' КАК [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 13) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '14' КАК [Код стиля], ' 24-часовое время с миллисекундами -hh:mm:ss:mmm(24h)' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 14) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '20' КАК [Код стиля], 'ODBC canonical -yyyy-mm-dd hh:mm:ss(24h)' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 20) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '21' КАК [Код стиля], «Канонический ODBC (с миллисекундами) -гггг-мм-дд чч:мм:сс. ммм» КАК [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 21) AS [Формат вывода] СОЮЗ ВСЕХ ВЫБЕРИТЕ '22' КАК [Код стиля], 'мм/дд/гг чч:мм:сс AM (или PM)' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 22) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '23' КАК [Код стиля], 'ISO 8601 - гггг-мм-дд' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 23) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '100' КАК [Код стиля], 'mon dd yyyy hh:mmAM' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 100) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '101' КАК [Код стиля], 'USA -mm/dd/yyyy' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 101) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '102' КАК [Код стиля], 'ANSI -yyyy.mm.dd' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 102) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '103' КАК [Код стиля], 'Британский/французский -дд/мм/гггг' AS [стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 103) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '104' КАК [Код стиля], 'Немецкий - дд. мм.гггг' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 104) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '105' КАК [Код стиля], «Итальянский -дд-мм-гггг» AS [стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 105) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '106' КАК [Код стиля], 'Сокращенное название месяца -dd mon yyyy' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 106) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '107' КАК [Код стиля], 'Сокращенное название месяца -mon dd, yyyy' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 107) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '108' КАК [Код стиля], '24-часовое время -чч:мм:сс' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 108) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '109' КАК [Код стиля], 'По умолчанию + миллисекунды -mon dd yyyy hh:mm:ss:mmmAM (или PM) ' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 109) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '110' КАК [Код стиля], 'USA -mm-dd-yyyy' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 110) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '111' КАК [Код стиля], 'JAPAN -yyyy/mm/dd' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 111) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '112' КАК [Код стиля], 'ISO -yyyymmdd' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 112) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '113' КАК [Код стиля], 'Европа по умолчанию + миллисекунды -dd mon yyyy hh:mm:ss:mmm' КАК [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 113) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '114' КАК [Код стиля], ' 24-часовое время с миллисекундами -hh:mm:ss:mmm(24h)' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 114) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '120' КАК [Код стиля], 'ODBC canonical-yyyy-mm-dd hh:mm:ss(24h)' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 120) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '121' КАК [Код стиля], «Канонический ODBC (с миллисекундами) -гггг-мм-дд чч:мм:сс. ммм» КАК [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 121) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '126' КАК [Код стиля], 'ISO8601 -yyyy-mm-ddThh:mm:ss.mmm' AS [Стандарт и формат], CONVERT(VARCHAR(50), Getdate(), 126) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '127' КАК [Код стиля], 'ISO8601 с часовым поясом Z-yyyy-mm-ddThh:mm:ss.mmmZ' AS [Стандарт и формат], CONVERT(VARCHAR(100), Getdate(), 127) AS [OutputFormat] СОЮЗ ВСЕХ ВЫБЕРИТЕ '131' КАК [Код стиля], «Арабская дата хиджры - исламский календарь» AS [Стандарт и формат], CONVERT(VARCHAR(100), Getdate(), 131) AS [OutputFormat]
На скриншоте ниже вы можете увидеть код стилей, их стандарты, форматы и даты вывода.
Преобразование дат с помощью функции FORMAT()
В приведенной выше функции CONVERT() нам необходимо указать коды стилей для определенного выходного формата. Обычно мы не хотим запоминать эти коды; поэтому Microsoft представила функцию FORMAT() в SQL Server 2012.
Синтаксис показан ниже.
ФОРМАТ (значение, формат [ культура])
Значение : Требуется значение в поддерживаемом формате. Подробный список можно найти в документации Microsoft.
Формат : В формате мы можем указать коды формата или шаблон, чтобы скрыть данные ввода даты. В приведенном ниже сценарии показаны коды формата, шаблон и выходной формат.
DECLARE @InputDate DATETIME = '2020-12-08 15:58:17.643' ВЫБЕРИТЕ 'd' КАК [Код Формата], «Шаблон короткой даты» КАК «Шаблон», Формат(@InputDate, 'd') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'D' КАК [Код Формата], «Шаблон длинной даты» КАК «Шаблон», Формат(@InputDate, 'D') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'f' КАК [Код Формата], «Полный шаблон даты/времени (короткое время)» AS «Шаблон», Формат(@InputDate, 'f') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'F' КАК [Код Формата], «Полный шаблон даты/времени (длинное время)» AS «Шаблон», Формат(@InputDate, 'F') СОЮЗ ВСЕХ ВЫБЕРИТЕ 'g' КАК [Код Формата], «Общий шаблон даты/времени (короткое время)» AS «Шаблон», Формат(@InputDate, 'г') СОЮЗ ВСЕХ ВЫБЕРИТЕ 'G' КАК [Код Формата], 'Общий шаблон даты/времени (длинное время)' AS 'Шаблон', Формат(@InputDate, 'G') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'm' КАК [Код Формата], 'Шаблон месяца/дня' AS 'Шаблон', Формат(@InputDate, 'm') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'O' КАК [Код Формата], «Шаблон даты/времени туда и обратно» AS «Шаблон», Формат(@InputDate, 'O') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'R' КАК [Код Формата], «Шаблон RFC1123» AS «Шаблон», Формат(@InputDate, 'R') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 's' КАК [Код Формата], «Сортируемый шаблон даты/времени» AS «Шаблон», Формат(@InputDate, 's') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 't' КАК [Код Формата], «Кратковременный шаблон» AS «Шаблон», Формат(@InputDate, 't') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'T' КАК [Код Формата], «Долговременная модель» КАК «Шаблон», Формат(@InputDate, 'T') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'u' КАК [Код Формата], «Универсальный сортируемый шаблон даты/времени» AS «Шаблон», Формат(@InputDate, 'u') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'U' КАК [Код Формата], «Универсальный шаблон полной даты/времени» AS «Шаблон», Формат(@InputDate, 'U') КАК 'Вывод' СОЮЗ ВСЕХ ВЫБЕРИТЕ 'Y' КАК [Код Формата], «Шаблон года и месяца» КАК «Шаблон», Формат(@InputDate, 'Y') КАК 'Вывод'
Культура : Это необязательный аргумент, определяющий культуру. Если мы не указываем культуру, SQL Server использует язык текущего сеанса.
В приведенном ниже запросе мы преобразуем формат даты в указанный язык и региональные параметры. Нам нужно указать код культуры. Например, культурный код для США — en-US, а hi-IN — для Индии.
Сценарии используют код формата d для коротких шаблонов дат.
DECLARE @d DATETIME = '2020-12-08 16:36:17.760'; ВЫБЕРИТЕ ФОРМАТ (@d, 'd', 'en-US') AS 'US English', ФОРМАТ (@d, 'd', 'no') КАК 'Норвежский результат', ФОРМАТ(@d, 'd', 'hi-IN') КАК 'Индия', ФОРМАТ(@d, 'd', 'ru-RU') КАК 'Русский', ФОРМАТ(@d, 'd', 'gl-ES') AS 'Галицийский (Испания)', ФОРМАТ ( @d, 'd', 'en-gb' ) КАК 'Великобритания английский', ФОРМАТ (@d, 'd', 'zu') КАК 'Zulu', ФОРМАТ ( @d, 'd', 'de-de' ) КАК 'немецкий', ФОРМАТ ( @d, 'd', 'zh-cn' ) AS 'Упрощенный китайский (КНР)';
Вы получаете формат даты в указанной культуре, как показано ниже.
Если вы хотите, чтобы дата выводилась в полном шаблоне даты/времени (длинное время), укажите код формата F, и он быстро изменит ваш формат даты.
В формате даты вы также можете указать пользовательские форматы, и он преобразует строку ввода даты в соответствии с вашими требованиями.
Чтобы указать пользовательские строки, мы можем использовать следующие сокращения.
- дд: день месяца (от 01 до 31)
- dddd: написание дня
- MM: Номер месяца (от 01 до 12)
- ММММ: Написание месяца
- гг: Год в двузначном формате
- гггг: четырехзначный год
- чч: часы с 01 по 12
- ЧЧ: дает 24 часа. формат час от 00 до 23
- мм: минуты от 00 до 59
- сс: секунды от 00 до 59
- tt: AM или PM
.
В приведенном ниже сценарии мы преобразовали форматы ввода даты в несколько форматов, используя приведенные выше сокращения или коды.
DECLARE @d DATETIME = '2020-12-08 16:36:17.760'; ВЫБИРАТЬ ФОРМАТ (@d,'dd/MM/yyyy ') как [Формат даты 1], ФОРМАТ (@d, 'dd/MM/yyyy, hh:mm:ss') as [Формат даты 2], FORMAT(@d,'yyyy-MM-dd HH:mm:ss') as [Формат даты 3], FORMAT(@d,'Dd MMM yyyy HH:mm:ss')as [Формат даты 4] , FORMAT(@d,'MMM d yyyy h:mm:ss')as [Формат даты 5], ФОРМАТ (@d, 'dddd, MMMM, yyyy') как [Формат даты 6], ФОРМАТ (@d, 'МММ дд гггг') как [Формат даты 7], ФОРМАТ (@d, 'MM. dd.yy') как [Формат даты 8], ФОРМАТ (@d, 'MM-dd-yy') как [Формат даты 9] , ФОРМАТ (@d, 'hh:mm:ss tt') as [Формат даты 10], ФОРМАТ (@d, 'd-M-yy') как [Формат даты 11], FORMAT(@d,'MMMM dd,yyyy')as [Формат даты 12]
Использование AT TIME ZONE в SQL Server 2016 или более поздней версии
В разных странах используются разные часовые пояса. Обычно эти часовые пояса следуют смещению от времени всемирного координированного времени (UTC). Несколько примеров часовых поясов:
- Центральное летнее время Австралии: UTC +10:30
- Стандартное время Индии: UTC +5:30
- Летнее время в горах: UTC-6
- Сингапур Время: UTC+8
- Центральное летнее время: UTC-5
Подробный список часовых поясов см. в этой статье.
Многие страны переходят на летнее время, и часы переводятся на 1 час (или 30-45 минут) в зависимости от часовых поясов. Например, центральное летнее время следовало следующему расписанию:
- Начало стандартного времени: 1 ноября 2020 г. , 02:00 по местному времени. Часы были переведены на один час назад.
- Стандартное время заканчивается 14 марта 2021 г. в 02:00 по местному времени. Часы перейдут на один час вперед.
SQL Server не знает об этих часовых поясах и переходе на летнее время. Обычно организация придерживается зон UTC, так как это не требует каких-либо изменений.
Как мы можем преобразовать часовые пояса в SQL Server?
Вы можете использовать AT TIME ZONE начиная с SQL Server 2016 и конвертировать часовые пояса. В приведенном ниже запросе он показывает даты для центрального стандартного времени, стандартного времени Индии и стандартного времени Самоа.
Объявить @DateinUTC datetime2 = '2020-11-01 02:00:00' выбирать @DateinUTC В ЧАСОВОМ ПОЯСЕ «UTC» В ЧАСОВОМ ПОЯСЕ «Центральное стандартное время» как «Центральное стандартное время», @DateinUTC В ЧАСОВОМ ПОЯСЕ «UTC» В ЧАСОВОМ ПОЯСЕ «Стандартное время Индии» как «Стандартное время Индии», @DateinUTC В ЧАСОВОМ ПОЯСЕ «UTC» В ЧАСОВОМ ПОЯСЕ «Стандартное время Самоа» как «Стандартное время Самоа», @DateinUTC В ЧАСОВОМ ПОЯСЕ «UTC» В ЧАСОВОМ ПОЯСЕ «Стандартное время линии дат» как «Стандартное время линии дат»
Чтобы узнать поддерживаемые часовые пояса, вы можете запросить sys. time_zone_info и возвращает часовой пояс и смещение.
Затем вы можете отфильтровать часовые пояса, которые в настоящее время придерживаются летнего времени.
Выберите * из sys.time_zone_info, где is_currently_dst=1
Теперь давайте рассмотрим переход на летнее время для восточного времени.
- Переход на летнее время — воскресенье, 8 марта 2020 г. , 2:00.
- Летнее время закончилось — воскресенье, 1 ноября 2020 г., 2:00.
Преобразуйте свой пояс UTC в стандартное восточное время, и вы сможете заметить влияние перехода на летнее время.
ЗАЯВИТЬ @PreDST datetime = '2020-03-08 06:59:00', @PostDST datetime = '2020-03-08 07:00:00'; ВЫБИРАТЬ @PreDST В ЧАСОВОМ ПОЯСЕ 'UTC' В ЧАСОВОМ ПОЯСЕ 'Восточное стандартное время' AS [EST время до перехода на летнее время], @PostDST В ЧАСОВОМ ПОЯСЕ 'UTC' В ЧАСОВОМ ПОЯСЕ 'Восточное стандартное время' AS [EST время до перехода на летнее время];
Полезные советы по использованию форматов даты SQL CONVERT
Оцените требования вашего приложения и выберите подходящий тип данных date, SmallDateTime, DateTime, DateTime2 и DateTimeOffset.