Sql how to format date

Sql how to format date

SET DATEFORMAT (Transact-SQL)

Задает порядок элементов даты (месяц, день, год) при интерпретации символьных строк дат. Эти строки имеют тип date, smalldatetime, datetime, datetime2 или datetimeoffset.

Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).

Sql how to format date. Смотреть фото Sql how to format date. Смотреть картинку Sql how to format date. Картинка про Sql how to format date. Фото Sql how to format dateСинтаксические обозначения в Transact-SQL

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

format | @format_var
Порядок следования составляющих частей даты. Допустимые параметры: mdy, dmy, ymd, ydm, myd и dym. Может быть задано в формате Юникод или в виде двухбайтовой кодировки (DBCS), преобразованной в Юникод. Для языкового стандарта «Английский (США)» значение по умолчанию равно mdy. Значения параметра DATEFORMAT по умолчанию для всех поддерживаемых языков см. в разделе sp_helplanguage (Transact-SQL).

Комментарии

Значение ydm параметра DATEFORMAT не поддерживается для типов данных date, datetime2 и datetimeoffset.

Параметр DATEFORMAT может интерпретировать символьные строки по-разному для разных типов данных даты в зависимости от их формата строк. Например, интерпретации datetime и smalldatetime могут не соответствовать date, datetime2 или datetimeoffset. Этот параметр влияет на интерпретацию символьных строк при их преобразовании в значения даты для базы данных. Он не влияет на отображение значений типов данных даты, хранящихся в базе данных, а также на формат их хранения.

Некоторые форматы символьных строк, например ISO 8601, интерпретируются независимо от параметра DATEFORMAT.

Установка SET DATEFORMAT происходит во время выполнения, а не во время синтаксического анализа.

SET DATEFORMAT имеет преимущество над неявной установкой формата даты SET LANGUAGE.

Разрешения

Необходимо быть членом роли public.

Примеры

FORMAT (Transact-SQL)

Возвращает значение в указанных формате и культуре (не обязательно). Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT. Для общих преобразований типов данных продолжайте использовать CAST и CONVERT.

Sql how to format date. Смотреть фото Sql how to format date. Смотреть картинку Sql how to format date. Картинка про Sql how to format date. Фото Sql how to format dateСинтаксические обозначения в Transact-SQL

Синтаксис

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

value
Выражение поддерживаемого типа данных для форматирования. Список допустимых типов см. в таблице в последующем разделе «Примечания».

format
Шаблон формата nvarchar.

culture
Необязательный аргумент nvarchar, обозначающий язык и региональные параметры.

Типы возвращаемых данных

nvarchar или NULL

Длина возвращаемого значения определяется аргументом format.

Remarks

Функция FORMAT возвращает значение NULL для ошибок, когда culture не является valid. Например, NULL возвращается, если значение, заданное в format, недопустимо.

Функция FORMAT не детерминирована.

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

Функция FORMAT использует правила форматирования среды CLR, согласно которым двоеточия и точки должны экранироваться. Поэтому когда строка форматирования (второй параметр) содержит двоеточие или точку, они должны быть экранированы обратной косой чертой, если входное значение (первый параметр) имеет тип данных time. См. пример Г. Использование функции FORMAT с типами данных времени.

Примеры

A. Простой пример функции FORMAT

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

Б. Функция FORMAT с пользовательскими строками форматирования

В следующем примере показано форматирование числовых значений с помощью заданного пользовательского формата. В примере предполагается, что текущая дата — 27 сентября 2012 г. Дополнительные сведения об этих и других пользовательских форматах см. в статье Пользовательские строки форматирования чисел.

В. Функция FORMAT с числовыми типами

Этот пример задает немецкий язык и региональные параметры (de-de).

Г. Использование функции FORMAT с типами данных времени

Формат возвращает текущее время в формате с AM или PM

Формат возвращает заданное время с AM

Формат возвращает заданное время с PM

Формат возвращает заданное время в 24-часовом формате

How to Format a Date in T-SQL

Problem:

You’d like to display a date value in another format in SQL Server.

Example:

Our database has a table named company with data in the columns id (primary key), name, and start_date.

idnamestart_date
1Lisa Bank2019-01-20
2Credit Financial Institute2018-03-14
3Williams Holding2019-10-28

For each company, let’s convert their start date to a new format, ‘YYYY/MM/DD’, where YYYY is a 4-digit year, MM is a 2-digit month, and DD is a 2-digit day.

Solution 1:

We’ll use the CONVERT() function. Here’s the query you’d write:

Here is the result:

namestart_date
Lisa Bank2019/01/20
Credit Financial Institute2018/03/14
Williams Holding2019/10/28

Discussion:

Use the CONVERT() function to change the format of a date from a given column or expression.

This function takes three arguments:

The table below presents the most popular date style codes:

codedescription
10111/30/2019
1022019.11.30
10330/11/2019
10430.11.2019
10530-11-2019
11011-30-2019
1112019/11/30

A comprehensive list of format styles can be found in the T-SQL documentation.

The query above changed the format of Lisa Bank’s date 2019-01-20 to a string containing the date ‘2019/01/20’.

Solution 2:

In SQL Server 2012 and later, you can use the FORMAT() function to change date/time formats. You use the characters below to specify the desired format:

patterndescription
ddday in range 01-31
MMmonth in range 01-12
yy2-digit year
yyyy4-digit year
HHhour in range 00-23
mmminutes in range 00-59
ssseconds in range 00-59

Here’s the query you would write using FORMAT():

The first argument is the datetime/date/time value to reformat. The second is a string containing the pattern of the new format. This function returns an NVARCHAR data type. Use FORMAT() if you work on SQL Server 2012 or later and want to convert dates/times to strings containing the formatted dates/times.

SQL Date Format Explained with Examples

Table of Contents

In this article, you will learn how to format date and time values using SQL Statements. There are more than 50 SQL Date Formats that can be used in different versions of SQL Server, MySQL, and other database management systems. Apart from SQL Date Formats, Wikipedia provides a lengthy list of SQL date formats used in different parts of the world. For example in the United States, a unique date format ‘mm-dd-yyyy’ is being used. Some nations, such as Korea, Iran, and China, write the year first and the day last (yyyy-mm-dd). (MIT)

This different Date interpretation varies between different countries. Suppose you have stored the ’01-05-1979′ date in your SQL database. SQL Server and MySQL have their specific Date formats. On retrieval of this date can communicate different meanings to different peoples across the globe.

Hence for a database programmer and a user, SQL Date Format is very much necessary to learn. In this article, we will try to enlist and outline the details of all SQL Date Formats used in SQL Server and MySQL with east and practical examples.

As you have already learned, various SQL Date Functions and SQL Time Functions articles about the different functions like FORMAT() and CONVERT() can be used to format Date in a specific way.

Types of MS SQL Server Date Formats

MS SQL Server provides Six different data types for manipulating Date and Time values. Similarly, you can SQL Server Convert Date Formats.

Data TypesSQL Date FormatExample
Timehh:mm:ss[.nnnnnnn]12:36:30.1231231
DateYYYY-MM-DD1979-05-01
SmallDateTimeYYYY-MM-DD hh:mm:ss1979-05-01 12:36:30
DateTimeYYYY-MM-DD hh:mm:ss[.nnn]1979-05-01 12:36:30.123
DateTime2YYYY-MM-DD hh:mm:ss[.nnnnnnn]1979-05-01 12:36:30.1231231
DateTimeOffset

YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm1979-05-01 12:36:30.1231231 + 05:30

Let run this SELECT statement on MS SQL SEVER to verify the above SQL Date formats in SQL SERVER. In this query, we have used GETDATE() and SYSDATETIME() SQL Functions to get the current DateTime value. The SQL Date and Time Functions GETUTCDATE() and SYSUTCDATETIME() functions are used

SAMPLE OUTPUT

Use of FORMAT() Function in SQL Date Formats

Let’s start explaining the use of FORMAT() Microsoft SQL Server Function for formatting the dates and times. Before MS SQL SERVER 2008 version, the CONVERT() Function was to perform all SQL Date Formats and to convert from one Date Format to other. We will also explain the use of CAST() and CONVERT() for SQL Date convert and format options in this article. After learning the syntax, you will be demonstrated a list of the available SQL examples on how to use the CONVERT() SQL Server function to handle different SQL SERVER Date formats in a database.

Syntax of FORMAT() Function

In, MS SQL SERVER 2012, the FORMAT() function is introduced for handling the conversion of SQL Date Formats. You do not need to remember the default SQL DateTime Format Numbers to convert a date from one specific format to another in the FORMAT() function.

The syntax of the SQL Server FORMAT function is the following:

Different types of supported date formats

Here is the table which shows the list of supported dates characters with their range and expected output values:

FormatRange/Output
dd01-31
MM01-12
yy00-99
HH00-23
mm00-59
ss00-59
ttAM or PM
ddddDay Name e.g. Monday
MMMAbbreviated Month Name e.g. JAN, FEB
MMMMFull Month Name
yyyyfour digit year
d1-31
udUS Culture

Example-1 | SQL Date Format with the FORMAT() Function

Now is the perfect time to work with SQL Date formats examples with the FORMAT() functions. In all the below examples, We will use Use the FORMAT() SQL Function to mentioning Different SQL Date Formats. We will use the GETDATE() function to get the DateTime value and will use CUSTOM Format String. In this SELECT Statement, we will use only two arguments (value, and format_string).

SAMPLE OUTPUT

SQL Server Date FORMAT with Culture

Example-2 | Use of Culture with SQL Date Format()

Here is another example of the SELECT Statement that will use the culture argument in the FORMAT() function. You will see how simple it will be to get the required SQL Date Format for a specific region. For example, you want to convert the DateTime value into US English, Norwegian, Zulu, and Indian-Hindi format. We will use only their culture code from the above-mentioned list as under

SAMPLE OUTPUT

CAST and CONVERT() Date Format Function

Microsoft SQL Server 2008 and earlier versions used this CONVERT() SQL function to format dates in SQL queries and other SQL procedures. These functions convert an expression of one data type to another. Hence these SQL functions can also be used to Format SQL Dates. The CAST() and The CONVERT() function can convert a value (of any type) into a specified datatype.

As far as SQL Date Formatting is concerned, the FORMAT() function is a much better choice as compared to the CONVERT() SQL function. It is not very flexible and provides limited date formats and styles in contrast to the SQL FORMAT() function for date formatting.

SQL Server Date and Time styles

SQL Date Formats/styles are mentioned in the official documentation with the help of a table consisting of more than 40 different date formats. For a date or time data type expression, style can have one of the values shown in the following table. It is not be mentioned here that CAST() SQL Function can convert/format a SQL date format to any other datatype but cannot use these styles.

Syntax of CAST() / CONVERT()

In both these syntax, the expression means the data type which you need to format or convert a SQL DateTime value. You can observe in both The CAST() and CONVERT() expression and data_type(length) parameters are being indifferent sequences. The CONVERT SQL Function contains an extra parameter style which can be chosen from the above-mentioned table from the official documentation.

Here is a smaller snapshot of this table.

Sql how to format date. Смотреть фото Sql how to format date. Смотреть картинку Sql how to format date. Картинка про Sql how to format date. Фото Sql how to format date SQL Date format Styles in SQL Server | Figure 1

Example-3 | Use of CONVERT() for SQL Server DATE Formats

In this code you can see that we are using two styles USA and ANSI in the CONVERT() SQL Server Function with the help of Style parameter values 101 and 102 respectively. We have used the VARCHAR data type to convert the values returned by the GETDATE() SQL Function. As shown in the above Figure 1 showing the style table, USA date style code 101 for displaying year value with century and only 1 for year value without century.

SAMPLE OUTPUT

In the output, you can see the style values from figure 1 are correctly producing the output. In these, all examples USA style value is used in different ways with Date and Datetime target format.

Example-4 | Use of CAST() for SQL Server DATE Formats

The CAST() SQL Function is used to convert a data type into another data type. Here in this example, we will use the CAST() SQL Function to convert a DateTime value returned by GETDATE() function into varchar, DateTime, date, and time data types.

SAMPLE OUTPUT

In the sample output of this example, you can see that

Example-5 | Use of Long SQL Date Formats with CONVERT()

In most parts of the world, a long-date format is being used. For example in Europe, the Following «DD MMM YYYY HH:MM:SS: MMM» long date format is used. In the United States, this «USA with Time AM/PM» long date format is also used. ISO uses this long-date format «YYYY-MM-DDTHH:MM: SS.mmm».

In this example, we will use see how the CONVERT() function can be used with Style code from the official SQL Date FORMAT Styles table to format SQL dates in the above-mentioned date formats.

SAMPLE OUTPUT

Sql how to format date. Смотреть фото Sql how to format date. Смотреть картинку Sql how to format date. Картинка про Sql how to format date. Фото Sql how to format date SQL Date Format | Example 5 output

Example-6 | Use of DATEADD() with CONVERT() and CAST()

In this example, we will see that DATADD() SQL Function can be used with CAST() and CONVERT() date functions to add and subtract date with new formats. As you know that, DATEADD() SQL Server function can add/subtract year, month, or day values from the given DateTime value. In this code, we will get the current date using the GETDATE() Function and then will add and subject 1 year. We will use short date format 107 from the style table.

SAMPLE OUTPUT

Sql how to format date. Смотреть фото Sql how to format date. Смотреть картинку Sql how to format date. Картинка про Sql how to format date. Фото Sql how to format date SQL DATE Convert Format with DATEADD | Example Output

Summary

In earlier versions of Microsoft SQL SEVER, CONVERT() SQL Function was used with a pre-defined list of SQL Date Format and styles. In, MS SQL SERVER 2012 and higher, the FORMAT() function is introduced for handling the conversion and formatting of SQL Date Formats. You do not need to remember the default SQL DateTime Format Numbers to convert a date from one specific format to another in the FORMAT() function.

References

Related Posts

Didn’t find what you were looking for? Perform a quick search across GoLinuxCloud

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Sql how to format date. Смотреть фото Sql how to format date. Смотреть картинку Sql how to format date. Картинка про Sql how to format date. Фото Sql how to format date

For any other feedbacks or questions you can either use the comments section or contact me form.

Thank You for your support!!

date (Transact-SQL)

Определяет дату в SQL Server.

Описание типа данных date

СвойствоЗначение
Синтаксисdate
ИспользованиеDECLARE @MyDate date

CREATE TABLE Таблица1 ( Столбец1 date )Формат строковых литералов по умолчанию

(используется для клиента нижнего уровня)ГГГГ-ММ-ДД

Дополнительные сведения см. в подразделе «Обратная совместимость для клиентов низкого уровня» следующего раздела.ДиапазонОт 0001-01-01 до 9999-12-31 (от 1582-10-15 до 9999-12-31 для Informatica)

От 1 января 1 года до 31 декабря 9999 года нашей эры (от 15 октября 1582 года до 31 декабря 9999 года для Informatica).Диапазоны элементовГГГГ обозначает 4 цифры, которые представляют год и принимают значения от 0001 до 9999. Для Informatica значение ГГГГ ограничено диапазоном от 1582 до 9999.

ММ обозначает 2 цифры, которые представляют месяц и принимают значения от 01 до 12.

ДД обозначает две цифры, представляющие день указанного месяца и принимающие значения от 01 до 31 в зависимости от месяца.Длина в символах10 позицийТочность, масштаб10, 0Объем памяти3 байта, фиксированныйСтруктура хранилищаДата хранится в одной переменной типа integer размером 1 или 3 байта.ТочностьОдин деньЗначение по умолчанию1900-01-01

Это значение используется как присоединяемая часть даты при неявном преобразовании данных типа time в значение типа datetime2 или datetimeoffset.КалендарьГригорианскийОпределяемая пользователем точность в долях секундыНетУчет и сохранение смещения часового поясаНетУчет перехода на летнее времяНет

Поддерживаемые форматы строковых литералов для типа данных date

В приведенной ниже таблице перечислены допустимые форматы строковых литералов для типа данных date.

ЧисловойОписание
mdy

[гг]гг-[м]м-дд

Сочетания [м]м, дд и [гг]гг представляют в строке месяц, день и год, разделенные символом косой черты (/), дефисом (-) или точкой (.).

Поддерживаются только двух- и четырехзначные форматы записи года. Для записи года рекомендуется всегда использовать четырехзначный формат. Чтобы указать целое число в промежутке от 0001 до 9999, представляющее пороговое значение года при преобразовании двухзначной записи в четырехзначную, необходимо использовать параметр конфигурации сервера two digit year cutoff.

Примечание. Для Informatica значение ГГГГ ограничено диапазоном от 1582 до 9999.

Если двузначное число, обозначающее год, меньше или равно двузначному числу из последних двух цифр порогового года, год относится к тому же столетию, что и пороговый год. Если двузначное число, обозначающее год, больше двузначного числа из последних двух цифр порогового года, год относится к столетию, которое предшествует столетию порогового года. Например, если пороговое значение года для двухзначной записи равно 2049, то год, обозначенный двумя цифрами 49, интерпретируется как 2049, а год, обозначенный двумя цифрами 50, интерпретируется как 1950.

Формат даты по умолчанию определяется текущими настройками языковых стандартов. Формат даты можно изменить с помощью инструкций SET LANGUAGE и SET DATEFORMAT.

Формат гдм не поддерживается для типа данных date.

Алфавитный форматОписание
мес [дд][,] гггг

гггг [дд] мес

Значение мес означает полное или сокращенное название месяца на текущем языке. Запятые являются необязательными, регистр букв не учитывается.

Во избежание неоднозначности используйте четырехзначную запись года.

Если не указано число месяца, подразумевается первое число месяца.

ISO 8601Описание
ГГГГ-ММ-ДД

ГГГГММДД

То же, что и стандарт SQL. Этот формат является единственным международным стандартом.
Без разделителейОписание
[гг]ггммдд

гггг[мм][дд]

Данные типа date могут быть определены с помощью четырех, шести или восьми цифр. Строка из шести или восьми цифр всегда интерпретируется как гмд. На месяц и день всегда должно приходиться по две цифры. Строка из четырех цифр воспринимается как значение года.
ODBCОписание
Зависит от API-интерфейса ODBC.
Формат W3C XMLОписание
гггг-мм-ддTZDВведен для использования в XML и SOAP.

Соответствие стандартам ANSI и ISO 8601

Значение date соответствует стандартному определению ANSI SQL для григорианского календаря: «Замечание 85 — данные типа Datetime позволяют хранить даты григорианского календаря в виде чисел диапазона от 0001-01-01 CE до 9999–12–31 CE».

Формат строковых литералов по умолчанию, используемый для клиентов низкого уровня, соответствует стандарту SQL, в котором он определен как ГГГГ-ММ-ДД. Данный формат аналогичен определению даты в стандарте ISO 8601.

Для Informatica диапазон ограничен интервалом от 1582-10-15 (15 октября 1582 г.) до 9999-12-31 (31 декабря 9999 г.).

Обратная совместимость для клиентов нижнего уровня

Некоторые клиенты нижнего уровня не поддерживают типы данных time, date, datetime2 и datetimeoffset. В следующей таблице показано сопоставление типов экземпляра более высокого уровня SQL Server и клиентов низкого уровня.

Тип данных SQL ServerФормат строкового литерала по умолчанию, передаваемый клиенту низкого уровняODBC низкого уровняOLEDB низкого уровняJDBC низкого уровняSQLCLIENT низкого уровня
timeчч:мм:сс[.ннннннн]SQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString
dateГГГГ-ММ-ДДSQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString
datetime2ГГГГ-ММ-ДД чч:мм:сс[.ннннннн]SQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString
datetimeoffsetГГГГ-ММ-ДД чч:мм:сс[.ннннннн] [+|-]чч:ммSQL_WVARCHAR или SQL_VARCHARDBTYPE_WSTR или DBTYPE_STRJava.sql.StringString или SqString

Преобразование данных типа Date и Time

При преобразовании в типы данных даты и времени SQL Server отвергает все значения, которые он не распознает как значения даты или времени. Сведения об использовании функций CAST и CONVERT c данными типов даты и времени см. в статье Функции CAST и CONVERT (Transact-SQL).

Преобразование даты в другие типы данных даты и времени

В этом разделе описывается, что происходит при преобразовании типа данных date в другие типы даты и времени.

Преобразование в time(n) завершается сбоем, и появляется сообщение об ошибке 206: «Конфликт типов операндов: date несовместим с time».

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

Преобразование строковых литералов в типы данных даты и времени разрешается, если все части строк записаны в допустимом формате. Иначе возникает ошибка времени выполнения. Явные или скрытые преобразования, в которых не задан стиль преобразования типов данных даты и времени в строковые литералы, будут проведены в формате по умолчанию для текущего сеанса. В таблице ниже приводятся правила преобразования строковых литералов в тип данных date.

Строковый литерал входаdate
ODBC DATEСтроковые литералы ODBC сопоставляются с типом данных datetime. Любая операция присваивания литералов ODBC DATETIME типу данных date вызывает неявное преобразование между данным типом и типом datetime согласно правилам преобразования.
ODBC TIMEСм. предыдущее правило ODBC DATE.
ODBC DATETIMEСм. предыдущее правило ODBC DATE.
только DATEПростейший.
только TIMEУказаны значения по умолчанию.
только TIMEZONEУказаны значения по умолчанию.
DATE + TIMEИспользуется компонент DATE входной строки.
DATE + TIMEZONEНе допускается.
TIME + TIMEZONEУказаны значения по умолчанию.
DATE + TIME + TIMEZONEИспользуется компонент DATE локального значения DATETIME.

Примеры

В следующем примере сравниваются результаты приведения строкового типа к каждому из типов данных date и time.

Источники информации:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *