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

Содержание

Синтаксис функции CONVERT в СУБД в SQL Server



Инструкция CREATE SCHEMA


Инструкция CREATE SCHEMA в SQL:2003, Microsoft SQL Server, Oracle и DB2 имеет различное значение.
В стандарте SQL:2003 определено, что… Читать»



Оператор AND


Оператор AND объединяет два булевых выражения и возвращает значение TRUE, когда они оба истинны. Следующий… Читать»



Почему важен приоритет операторов


Вопрос приоритета операторов не такой тривиальный, как может показаться на первый взгляд. Возьмем для… Читать»



Операторы ALL/ANY/SOME


Оператор ALL выполняет булеву проверку подзапроса на предмет того, во всех ли строках существуют значения. … Читать»

Синтаксис функции CONVERT в СУБД в SQL Server может быть более сложным, однако за эту функциональность стоит платить — можно распоряжаться не только типами данных, но и форматированием результирующего набора данных. Параметры length и style в аргументах функции необязательны. Параметр length используется для типов данных, имеющих длину (таких как VARCHAR, CHAR, NCHAR и VARBINARY), а параметр style — для преобразования типов datetime и smalldatetime в текст. (Дополнительно определяется, как результирующая строка будет форматироваться; к примеру, с указанием века, с миллисекундами и т. д.) Тип данных может быть встроенным; пользовательские типы данных не поддерживаются. К примеру, представление базы данных V_CUSTOMER_TOTAL базы данных ACME имеет столбец TOTAL_PRICE числового типа данных. Чтобы отобразить эти данные с предшествующим знаком доллара ($), нужно перед операцией конкатенации преобразовать число в символьный тип данных. (В данном случае Oracle выполняет неявное преобразование, в то время как СУБД DB2 9.5 и Microsoft SQL Server требуют явного преобразования, в противном случае будет сгенерирована ошибка.) СУБД Oracle неявно преобразует числовые типы данных (и совместимые с ними) в символьные строки при их объединении оператором конкатенации. Пример объединения числа (столбец TOTAL_PRICE) с символьной Обработка данных в SQL обычно не требует внедрения в детали двоичного кода. В отличие от других производителей СУБД, Oracle предлагает функцию для преобразования двоичных данных в числа. К примеру, двоичным представлением десятичного числа 8 является 1000. Функция bin_to_num(1,0,0,0) , к примеру, вернет число 8. Ниже приведен синтаксис Microsoft SQL Server 2008 данного запроса (для достижения того же результата можно применить функцию CONVERT). Шаблоны формата представляют сбой литералы, описывающие, как даты и время должны быть представлены в строках, или как должна интерпретироваться строка в целях преобразования в дату или число. Шаблон формата не изменит внутреннего представления данных; он влияет только на способ отображения информации. В Oracle и IBM DB2 для этого применяют предопределенные шаблоны форматов; в то же время в Microsoft SQL Server шаблонам назначаются определенные коды.

cast, convert; и функции агрегирования. Приведите примеры.

Для
явного преобразования данных из одного
типа в другой в SQL
используются функции CAST или CONVERT.
Синтаксис этих функций:

CAST (Выражение
AS Тип_данных[(Длина)])

CONVERT
(Тип_данных[(Длина)], Выражение [, Стиль]),
где

Выражение
— любое SQL-выражение либо название
столбца;

Тип_данных
— тип данных, в формате которого
представляется данное выражение. Может
использоваться числовой, символьный
тип или тип дата-время;

Длина
— длина поля вывода для символьных
типов данных;

Стиль
— формат представления данных при
конвертировании данных типа дата-время,
или числовых типов в символьные типы.

Функции
CAST
и CONVERT
используются при конвертировании
символьного типа в числовой тип или тип
дата-время и наоборот из числового типа
или типа дата-время в символьный тип.

• Любое
числовое выражение может быть явно
преобразовано в любой другой числовой
тип;


В
результате преобразования символьного
выражения в числовой тип отсекаются
начальные и конечные пробелы, а остальные
символы преобразуются в числовое
значение по правилам языка SQL;

• Если
явно заданная длина символьного типа
недостаточна и преобразованное значение
не размещается в нем, то результативное
значение усекается справа;


Возможно
явное преобразование символьного типа
в символьный, но с другой длиной. Если
длина результата больше длины аргумента,
то значение дополняется пробелами; если
меньше, то усекается;


NULL-значение
преобразуется в NULL-значение соответствующего
типа.

Пример

SELECT
CAST (STUDENT_ID AS CHAR(10))

FROM
STUDENT;

Агрегирующие
функции

позволяют получать из таблицы сводную
(агрегированную) информацию, выполняя
операции над группой строк таблицы. Для
задания в SELECT-запросе агрегирующих
операций используются следующие ключевые
слова:


COUNT
определяет количество строк или значений
столбца, выбранных посредством запроса
и не являющихся NULL-значениями;


SUM
вычисляет арифметическую сумму всех
выбранных значений данного столбца;


AVG
вычисляет среднее значение для всех
выбранных значений данного столбца;


МАХ
вычисляет наибольшее из всех выбранных
значений данного столбца;


MIN
вычисляет наименьшее из всех выбранных
значений данного столбца.

Для функций SUM
и AVG рассматриваемый столбец обязательно
должен содержать числовые значения.

В
функциях под столбцом понимают, столбец
виртуальной таблицы, в которой могут
содержаться данные не только из столбца
базовой таблицы, но и данные, полученные
путем преобразования. При этом выражение,
определяющее столбец такой таблицы,
может быть сколь угодно сложным, но не
должно содержать агрегирующие функций
(вложенность агрегирующих функций не
допускается). Однако из агрегирующих
функций можно составлять любые выражения.

Аргументу
всех функций, кроме COUNT(*), может
предшествовать ключевое слово DISTINCT
(различный), указывающее, что избыточные
дублирующие значения должны быть
исключены перед тем, как будет применяться
функция. Специальная же функция COUNT(*)
служит для подсчета всех без исключения
строк в таблице (включая дубликаты).

Если в
запросе, использующем агрегирующие
функции, не используется фраза GROUP BY, то
в перечень элементов оператора SELECT
можно включать лишь агрегирующие функции
или выражения, содержащие такие функции.
Другими словами, нельзя иметь в списке
столбцы, не являющихся аргументами
агрегирующих функций.

Например,
из таблицы книги, необходимо вывести
максимальную сумму, которую можно
получить при продаже всех одинаковых
книг, среднюю цену продаваемых книг,
количество авторов книг продаваемых в
магазине

SELECT
MAX(Кол_Кн*Цена), AVG(Цена),
COUNT(DISTINCT
Автор)

FROM КНИГИ;

Функция преобразования

SQL Server + примеры

В этом учебном пособии по SQL Server мы обсудим функцию SQL Server Convert() , различные примеры преобразования SQL Server и рассмотрим приведенную ниже тему.

  • SQL Server Преобразовать
  • SQL Server Преобразовать строку в дату
  • SQL Server Преобразовать DateTime
  • SQL Server Преобразовать DateTime в дату
  • SQL Server Преобразовать строку в столбец
  • SQL Server Преобразовать в строку / varchar
  • SQL Server Преобразовать дату в ГГГГММДД
  • SQL Server Преобразовать UTC в местное время
  • SQL Server Преобразовать метку времени в дату

Во всех примерах я использовал SQL Server 2019 и студию управления SQL Server.

Содержание

Функция преобразования SQL Server

В SQL Server Convert() — это функция, используемая для преобразования выражения из одного типа данных в выражение другого типа данных. И если преобразование не удастся, он вернет ошибку. В противном случае он вернет преобразованное выражение типа данных. Он имеет следующий синтаксис.

 CONVERT(тип_данных [(длина)] , выражение [ стиль] ) 
  • В приведенном выше синтаксисе аргумент тип_данных используется для определения результирующего типа данных выражения, которое пользователь хочет в конце . И он поддерживает несколько типов данных, таких как int, bigint, smallint, tinyint, bit, decimal, numeric, money, smallmoney, float, real, DateTime, smalldatetime, char, varchar, text, nchar, nvarchar, ntext и т. д.
  • длина — необязательный параметр, который принимает целочисленные значения. И он используется для определения длины результирующего типа данных. Значение по умолчанию length равно 30.
  • Выражение в приведенном выше синтаксисе используется для определения исходного выражения, тип данных которого пользователь хочет преобразовать.
  • Стиль является необязательным параметром, который принимает целые значения. И он используется для определения того, как функция Convert() будет переводить данные выражение .

Читать: Как создавать функции в SQL Server

Пример для SQL Server Convert()

 SELECT CONVERT(int, 99. 65) AS Result 

Пример для функции SQL Server Convert()

Итак, в приведенном выше примере, мы определили наше входное выражение как «99,65» , которое является выражением типа float, и в аргументе data_type мы определяем « int ». Таким образом, используя запрос функции преобразования, мы меняем тип данных « 99,65 » с числа с плавающей запятой на целое число. И после успешного выполнения он вернет следующий результат.

Окончательный вывод

Читать: Как установить SQL Server 2019 Express на Windows 10 шаг за шагом

SQL Server Преобразовать строку в дату

В SQL Server для преобразования строкового выражения в выражение даты доступны 3 различные функции преобразования. Мы собираемся обсудить каждый из следующих подробно с примерами.

  1. Функция Cast()
  2. Функция Convert()
  3. Функция Parse()

Преобразование строки в дату с помощью функции Cast()

Функция Cast() является одной из основных функций преобразования, доступных в SQL Server, которая используется для преобразования выражений из одного типа данных в другой. Он имеет следующий синтаксис:

 CAST(выражение AS data_type [(length)]) 

Пример

 SELECT CAST('11/06/2021' как дата) AS StringToDate 

Преобразование строки в дату с помощью Cast()

В приведенном выше примере мы определили наше входное выражение как «06.11.21», а также определили data_type как дату . И нет необходимости определять длину в случае даты. Таким образом, приведенный выше запрос преобразует выражение ’11/06/21′ в дату и возвращает следующий результат.

Результат запроса

Чтение арифметических операторов в SQL Server

Преобразование строки в дату с помощью функции Convert()

Convert() — это еще одна функция преобразования, доступная в SQL Server. Она более эффективна, чем функция Cast(), поскольку с ее помощью пользователь может определить стиль преобразования. И это подробно описано в начале этого поста.

Теперь при преобразовании строки в дату с помощью функции convert() важно указать тип стиля в запросе. Таким образом, правильное преобразование может иметь место.

Пример

 SELECT CONVERT(DATE,'06.11.2021',103) AS StringToDate 

String to Date с помощью Covert() в SQL Server

Итак, в примере сначала мы определили data_type как DATE , затем мы определили входную строку как выражение как ’11/06/2021′ . И, наконец, мы определили код стиля как 103 , который используется для указания формата даты как ‘ДД/ММ/ГГГГГ’ .

После успешного выполнения запроса будет возвращен следующий вывод.

Конечный результат

Преобразование строки в дату с помощью функции Parse()

Parse() также является функцией преобразования, доступной в SQL Server, которая используется для преобразования входной строки либо в числовое значение, либо в выражение даты/времени. Теперь для преобразования строкового значения функция PARSE() использует общеязыковую среду выполнения (CLR). И если на сервере не установлена ​​CLR, функция PARSE() вернет ошибку.

Функция Parse() имеет следующий синтаксис.

 PARSE(string_value AS data_type [USING Culture]) 
  • string_value используется для представления значения nvarchar (4000), которое пользователь хочет преобразовать в результирующее выражение типа данных.
  • Функция PARSE() вызовет ошибку, если string_value не является допустимым представлением запрошенного типа данных.
  • Параметр data_type используется для указания результирующего типа данных, который хочет пользователь.
  • Параметр культуры в приведенном выше синтаксисе является необязательным строковым параметром, который используется для указания культуры, в которой  string_value   отформатировано. И если культура не указана, будет использоваться текущий язык сеанса.

Пример

 SELECT PARSE('06. 11.2021' как дата) AS StingToDate 

Строка на дату с помощью Parse() в SQL Server

Итак, в приведенном выше примере сначала мы определили string_value как ‘ 06.11.2021 ‘, то мы определили data_type как дату и мы не используем культура вариант в этом примере. В конце концов, он вернет следующий результат.

Окончательный результат

Чтение: порт SQL Server

SQL Server Convert DateTime

В SQL Server доступны различные функции преобразования, связанные с Datetime, такие как Cast(), Convert(), Format() и т. д. Из всего этого Convert () предлагает различные параметры, связанные с форматом даты и времени, используя параметр стилей. Параметр стилей в функции Convert() принимает целочисленные значения и используется для указания формата преобразования.

Значения стилей, связанные с преобразованием даты и времени, поясняются ниже.

Without century With century Input / Output
0 100 mon dd yyyy hh:miAM/PM
1 101 1 = мм/дд/гг
101 = мм/дд/гггг
2 102 2 = гг. мм.дд
102 = гггг.мм.дд
3 103 3 = DD/MM/YY
103 = DD/MM/YYYY
4.ym.ym.ym.ym.ym.ym.ym.ym.ym.ym.ym.ym.ym.
5 105 5 = DD-MM-YY
105 = DD-MM-YYYY
6 106 6 = DD 1212121212121212121212121212120 2 MON 1212121212121212121212121212120 2 MON

2 MON

2 MON

2 MON

2 MON

2 MON

2 MON

2 MON

. 7 107 7 = пн дд, гг
107 = пн дд, гггг
8 108 hh:mm:ss
9 109 mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 10 = mm- dd-yy
110 = mm-dd-yyyy
11 111 11 = yy/mm/dd
111 = yyyy/mm/dd
12 112  12 = yymmdd
112 = ггггммдд
13 113 дд пн гггг чч:ми:сс:ммм
14 114 hh:mi:ss:mmm
20 120 yyyy-mm-dd hh:mi:ss
21 121 yyyy-mm -dd hh:mi:ss. mmm
  126 yyyy-mm-ddThh:mi:ss.mmm
  127 yyyy-mm-ddThh:mi:ss.mmmZ
  130 дд пн гггг чч:ми:сс:мммAM
  131 дд/мм/гг чч:ми:сс:мммАМ

SQL Server Convert DateTime

Чтение: Функция подстроки SQL Server [9 примеров]

SQL Server 9 Преобразование DateTime3 в дату значение DateTime для значения даты, давайте сначала разберемся с обоими этими выражениями. Выражение DateTime содержит как сведения о дате, так и сведения о времени. И простое выражение даты содержит только детали даты.

В SQL Server для получения текущей даты и времени мы можем использовать Функция ПОЛУЧИТЬДАТУ() . Он возвращает текущую системную дату и время базы данных. И значение генерируется из операционной системы компьютера, на котором работает SQL Server.

Синтаксис

 GETDATE() 

Пример

 SELECT GETDATE() AS Date 

GETDATE() Запрос в SQL Server

Теперь, чтобы преобразовать выражение DateTime в выражение даты в другом SQL Server функции, которые

  • Convert() Функция
  • Функция Try_Convert()
  • Функция Cast()

Каждую функцию мы разберем на примере.

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

Здесь мы собираемся использовать функцию Convert() для преобразования даты и времени в значение даты.

 CONVERT( DATE,  выражение  ) 

Чтобы преобразовать значение Datetime в правильное значение даты, мы можем следовать приведенному выше синтаксису. И нам нужно только указать действительное выражение Datetime в выражение параметр.

Пример

 SELECT CONVERT(DATE, GETDATE()) AS Date; 

Использование функции Convert() для перевода даты и времени в дату в SQL Server

В этом примере мы используем функцию GETDATE () для получения текущего системного значения даты и времени, и мы используем ее в качестве входного выражения . И мы также определяем data_type как DATE в запросе.

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

Функция Try_Convert() в SQL Server очень похожа на функцию Convert(), которая используется для преобразования значения одного типа данных в другой тип данных. Основное различие между функциями Try_Convert() и Convert() заключается в том, что функция Try_Convert вернет NULL, если преобразование типа данных завершится ошибкой. В то время как функция Convert() вызовет ошибку.

Функция Try_Convert() имеет следующий синтаксис.

 TRY_CONVERT(тип_данных [(длина)], выражение [ стиль]) 

Пример

 SELECT TRY_CONVERT(DATE, GETDATE()) AS Date; 

Использование функции Try_Convert() для преобразования даты и времени в дату

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

Здесь мы собираемся использовать функцию CAST() для преобразования даты и времени в значение даты.

 CAST(  выражение  AS DATE) 

Теперь, чтобы преобразовать значение даты и времени в правильное выражение даты с помощью CAST(), мы можем следовать приведенному выше синтаксису. И нам нужно только указать действительное выражение Datetime в выражение параметр.

Пример

Использование функции Cast() для преобразования даты и времени в дату

Читать: Примеры расширенных хранимых процедур в SQL Server

SQL Server Преобразование строки в столбец

В SQL Server для преобразования строки в столбец мы можем использовать оператор PIVOT. PIVOT в SQL Server — это оператор отношения, который используется для замены одного табличного выражения другим. Он используется для передачи данных уровня строки в столбец. И он имеет следующий синтаксис.

 SELECT <несводная колонка>,
    [первый сводной столбец] AS <имя столбца>,
    ...
    [последний сводной столбец] AS <имя столбца>
ОТ
    (<запрос SELECT, который создает данные>)
    AS <псевдоним исходного запроса>
ВРАЩАТЬСЯ
(
    <функция агрегирования>(<агрегируемый столбец>)
ЗА
[<столбец, содержащий значения, которые станут заголовками столбцов>]
    IN ([первая сводная колонка], [вторая сводная колонка],
    ... [последний сводной столбец])
) AS <псевдоним для сводной таблицы>
<необязательное предложение ORDER BY>; 

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

Образец таблицы продаж сотрудников в SQL Server

Приведенная выше таблица содержит годовую информацию о продажах сотрудников, работающих в организации. Теперь мы изменим строки таблицы на столбцы с помощью оператора PIVOT. Для этого воспользуемся следующим запросом.

 ВЫБЕРИТЕ [Год], Лин, Росс, Сэнди ИЗ
(ВЫБЕРИТЕ Имя, [Год], Продажи ОТ Сотрудника) Tab1
ВРАЩАТЬСЯ
(
СУММА(Продажи) ДЛЯ Имя В (Лин,Росс,Сэнди)) AS Tab2
ORDER BY [Tab2].[Year] 

В приведенном выше запросе мы сначала выбираем новые столбцы как Year, Lin, Ross и Sandy. После этого мы ежегодно объединяем продажи каждого сотрудника. В конце мы упорядочиваем значения таблицы по годам. И он вернет следующий вывод.

Окончательный вывод

Чтение: типы резервного копирования в SQL Server

SQL Server Convert int to string/varchar

В SQL Server доступны в основном 2 функции, которые мы можем использовать для преобразования целочисленного значения в строковое выражение. И мы обсудим обе функции на примере.

Использование Cast() для преобразования int в строку

 SELECT CAST(43210 as varchar(10)) as Num1 

В приведенном выше запросе мы используем функцию преобразования Cast() для преобразования целочисленного значения в выражение varchar. Для этого сначала мы использовали 43210 как целочисленное значение, а затем мы определили результирующий тип данных как varchar . И после успешного выполнения он вернет следующее значение.

Окончательный вывод

Использование Convert() для преобразования int в строку

 SELECT CONVERT(varchar(10), 43210) as Num2 

Теперь мы используем функцию Convert() для преобразования целочисленного значения в выражение varchar. В приведенном выше запросе мы преобразовываем 43210 в выражение varchar. И он вернет следующий результат.

Результат запроса

Чтение: SQL Server преобразует целое число в строку

SQL Server Преобразует дату в ГГГГММДД

В SQL Server мы также можем использовать формат года, месяца, дня «ГГГГММДД» в качестве вывода или в качестве фильтра для наших результатов. . Это более компактный метод отображения даты в сортируемом формате. При этом разделитель между годом, месяцем и днем ​​не требуется. Это отличная альтернатива, когда требуется единый стандарт даты.

В SQL Server доступны две функции, с помощью которых мы можем легко преобразовать стандартное значение даты в формат «ГГГГММДД».

Использование функции Format() для преобразования даты в ГГГГММДД

Функция Format в SQL Server используется для изменения формата заданного значения в соответствии с новым указанным форматом. И он в основном используется для форматирования числовых значений и значений даты/времени. Он имеет следующий синтаксис.

 ФОРМАТ( значение, формат [ культура ] ) 

Функция форматирования имеет 2 обязательных и 1 необязательный параметр. Первый обязательный параметр — это значение , которое используется для определения фактического значения выражения, которое пользователь хочет отформатировать. Второй обязательный параметр — формат , который используется для указания результирующего формата, который хочет пользователь. И последний необязательный параметр, , культура , который используется для указания культуры.

Пример

 SELECT FORMAT(GETDATE(), 'ггггММдд') AS NewFormat 

В этом примере мы используем функцию GETDATE() для получения текущего значения системной даты, поскольку мы используем его в качестве входного значения . После этого мы указываем требуемый формат как «ггггММдд». В конце он вернет следующий вывод.

Результат функции формата

Использование функции Convert() для преобразования даты в ГГГГММДД

 SELECT CONVERT(varchar, GETDATE(),112) AS NewFormat 

В приведенном выше запросе мы используем функцию Convert() для изменения формата даты значение в ГГГГММДД. Для этого мы преобразуем значение даты в выражение varchar, а также определяем код стиля как 112 , который используется для определения результирующего формата как ГГГГММДД . И запрос вернет следующий результат.

Окончательный вывод

Прочитано: Как создать таблицу в SQL Server Management Studio

SQL Server Преобразовать время UTC в местное время

В SQL Server 2016 или более поздних версиях мы можем легко преобразовать часовой пояс UTC в местный часовой пояс. SQL Server хранит основную информацию, относящуюся ко всем поддерживаемым часовым поясам, в таблице с именем « sys.time_zone_info ». Мы можем легко перечислить все поддерживаемые часовые пояса с помощью запроса.

 выберите * из sys.time_zone_info; 

Приведенный выше запрос вернет таблицу, содержащую имена всех часовых поясов, поддерживаемых в SQL Server, и мы можем использовать эти имена часовых поясов для преобразования зоны UTC в любой локальный часовой пояс, поддерживаемый в SQL Server. Эта таблица содержит более 100 часовых поясов.

Поддерживаемые часовые пояса в SQL Server

Теперь, когда мы получили все поддерживаемые имена часовых поясов в SQL Server, мы можем легко использовать следующий запрос для преобразования временной метки зоны UTC в локальный часовой пояс.

 ВЫБЕРИТЕ GETUTCDATE() КАК utc_time_zone,
CAST(GETUTCDATE() as datetime) AT TIME ZONE 'Восточное стандартное время США'
КАК local_time_zone 

В приведенном выше запросе, во-первых, мы используем функцию GETUTCDATE() для получения текущей даты и времени UTC системы базы данных в формате «ГГГГ-ММ-ДД чч:мм:сс. ммм». Затем мы используем функцию Cast() , чтобы изменить тип данных на Datetime. В последнем мы определяем требуемый часовой пояс как «Восточное стандартное время США» . Но мы также определяем любой часовой пояс, который поддерживается экземпляром SQL Server. Приведенный выше запрос вернет следующий результат.

SQL Server Преобразование UTC в местное время

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

Итак, к сожалению, нет способа преобразовать формат метки времени только в формат даты, поскольку между ними нет никакой связи. И мы также можем обратиться к этому сайту переполнения стека, который даст больше информации, связанной с ним.

Вам могут понравиться следующие статьи о сервере sql:

  • Как экспортировать данные из SQL Server в Excel
  • SQL Server Преобразование даты и времени в дату
  • Обработка исключений в SQL Server
  • MySQL и SQL Server
  • Как выбрать последнюю запись в SQL Server

Итак, в этом руководстве SQL Server мы изучили функцию SQL Server Convert() , Различный SQL Server Преобразуйте примеры и раскройте тему ниже.

  • SQL Server Преобразовать
  • SQL Server Преобразовать строку в дату
  • SQL Server Преобразовать DateTime
  • SQL Server Преобразовать DateTime в дату
  • SQL Server Преобразовать строку в столбец
  • SQL Server Преобразовать int в строку / varchar
  • SQL Server Преобразовать дату в ГГГГММДД
  • SQL Server Преобразовать UTC в местное время
  • SQL Server Преобразовать метку времени в дату am Bijay имеет более чем 15-летний опыт работы в индустрии программного обеспечения. За это время я работал с MariaDB и использовал ее во многих проектах. Большинство наших читателей из США, Канады, Великобритании, Австралии, Новой Зеландии и т. д.

    Хотите изучить MariaDB? Ознакомьтесь со всеми статьями и руководствами, которые я написал для MariaDB. Кроме того, я Microsoft MVP.

    Практическое руководство. Форматирование даты и времени в формате SQL с помощью функции преобразования T-SQL

    Разработчики SQL и администраторы базы данных SQL Server часто преобразуют дату и время в строку в кодах sql, используя функцию преобразования t-sql.
    Функция преобразования sql — это мощная функция преобразования со своими параметрами.
    Одним из параметров функции даты формата SQL «Преобразовать» является параметр стиля.
    Параметр стиля определяет формат выходной строки значения даты/даты и времени, выраженного в виде строкового значения.

    Но поскольку существует около 40 различных форматов даты и времени, и поскольку программисты sql обычно имеют дело с датой формата sql и задачами форматирования даты и времени с разными форматами, трудно запомнить и помнить значение параметра стиля для каждого параметра формата даты sql.

    Давайте еще раз вспомним синтаксис функции t-sql convert datetime:


    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
    --T-sql преобразовать код примера использования функции datetime в формат даты mm-dd-yyyy
    SELECT CONVERT(nvarchar(30),getdate(),110)

    Код

    На многих форумах по sql я обычно вижу вопрос «Как форматировать дату» и «Как форматировать значения даты и времени» в SQL Server.
    Я создал простую вспомогательную процедуру SQL, надеясь, что она будет полезна для программистов SQL, чтобы ответить на их вопросы о проблемах преобразования даты и времени и форматах даты.


    CREATE PROC SQLFormatDate
    AS

    SET NOCOUNT ON

    CREATE TABLE #tt (
      id INT IDENTITY(1,1),
      datestring NVARCHAR(30),
      style INT
    )

    @ DECLARE 2 style @

    DECLARE NVARCHAR(100)

    WHILE @style < 150
    BEGIN
      SET @sql = 'SELECT CONVERT(nvarchar(100),getdate(),' + cast(@style as nvarchar(5))+ ')'
      BEGIN TRY
        ВСТАВИТЬ В #tt(строка даты) EXEC SP_EXECUTESQL @sql;
        ОБНОВЛЕНИЕ #tt SET style = @style WHERE id = @@IDENTITY;
      КОНЕЦ ПОПЫТКИ
      НАЧАТЬ ПОМОЩЬ
      КОНЕЦ ПОЛУЧЕНИЯ;
      SET @style = @style + 1;
    КОНЕЦ;

    SELECT
      строка даты,
      стиль,
      'SELECT CONVERT(nvarchar(100),getdate(),' + cast(style as nvarchar(5))+ ')' example
    FROM #tt

    DROP TABLE #tt

    SET NOCOUNT OFF

    GO

    Код

    Разработчики SQL могут выполнить описанную выше вспомогательную процедуру преобразования даты и времени sql, чтобы увидеть, как они могут использовать ее для использования даты и времени в формате sql в строку.
    Все, что вам нужно сделать, это после создания вышеуказанной процедуры SQLFormatDate выполнить приведенный ниже оператор вызова t-sql sp.


    EXEC SQLFormatDate

    Код

    Если вы установите Microsoft SQL Server Management Studio вывод запросов t-sql в виде текста, просто следуя в меню «Запрос> Результаты в> Результаты в текст» или просто введите комбинацию клавиш быстрого доступа Ctrl + T для отображения результатов вызова хранимой процедуры SQLFormatDate как текст.
    Это позволит вам искать среди выходных форматов, так как вывод находится в одном окне и в текстовом формате.

    Например, если вы хотите преобразовать переменные даты и даты в формате sql, используя функцию t-sql Convert в формате дд/мм/гггг, вы можете найти значение формата даты и времени сегодня в формате дд/мм/гггг, которое равно 11/01. /2010.
    И когда вы ищете дд/мм/гггг, который имеет значение 01/11/2010, вы увидите, что соответствующий параметр стиля функции преобразования t-sql равен 103.
    Также вы можете найти пример запроса sql , выберите оператор «SELECT CONVERT (nvarchar (100), getdate (), 103)», который вы можете протестировать функцию преобразования формата даты и времени tsql для выполнения в SQL Server Management Studio.

    Обратите внимание, что выходные данные SQL-процедуры форматирования даты и времени SQLFormatDate показывают все форматы даты, доступные для разработчиков SQL, в одной единственной функции форматирования даты.
    Но тем не менее разработчикам t-sql могут потребоваться более сложные форматы даты для их строковых выражений даты и времени.
    Например, если требованием даты строки формата tsql является формат даты «дд-мон-гггг», который очень похож на строку даты, выводимую функцией Convert с параметром стиля, равным 106.
    Поэтому просто скопируйте связанный пример столбца объявления SQLFormatDate. внести некоторые изменения.


    ВЫБЕРИТЕ ЗАМЕНУ (ПРЕОБРАЗОВАТЬ (nvarchar (30), getdate (), 106), ' ', '-')

    Код

    И вывод приведенного выше выражения для преобразования строки даты и времени такой, как мы хотели: 11-Jan-2010 (dd-Mon-yyyy)
    Надеюсь, вы поняли, как хранимая процедура sql SQLFormatDate может помочь форматировать строковые значения даты и даты и времени. в целевых форматах даты sql.

    Другой пример также ответит на общий вопрос разработчиков sql: как отформатировать столбец даты как ГГГГ-ММ-ДД?
    На самом деле, когда вы выполняете хранимую процедуру справки по дате преобразования sql «», вы можете видеть, что параметр стиля 23 точно решит нашу проблему.


    -- форматирование столбца даты в формате ГГГГ-ММ-ДД
    SELECT CONVERT(nvarchar(30),getdate(),23)

    Код

    Другой способ форматирования столбца даты в формате даты ГГГГ-ММ-ДД с использованием функции преобразования sql — это преобразование или преобразование столбца даты в строку с использованием функции преобразования sql с параметром стиля, равным 120.
    Затем применение строковой функции sql LEFT или строковой функции sql SUBSTRING, как показано в приведенном ниже примере кодов tsql, определенно даст результаты в желаемых форматах даты ГГГГ-ММ-ДД.


    SELECT LEFT(CONVERT(nvarchar(30),getdate(),120),10)
    SELECT SUBSTRING(CONVERT(nvarchar(30),getdate(),120),1,10)

    Код

    Для разработчиков t-sql или администраторов баз данных SQL Server (DBS) приведенная выше хранимая процедура SQLFormatDate может быть полезна для просмотра всех доступных форматов с текущим значением даты и времени.