Sql how to format date
Sql how to format date
SET DATEFORMAT (Transact-SQL)
Задает порядок элементов даты (месяц, день, год) при интерпретации символьных строк дат. Эти строки имеют тип date, smalldatetime, datetime, datetime2 или datetimeoffset.
Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).
Синтаксические обозначения в 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.
Синтаксические обозначения в 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.
id | name | start_date |
---|---|---|
1 | Lisa Bank | 2019-01-20 |
2 | Credit Financial Institute | 2018-03-14 |
3 | Williams Holding | 2019-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:
name | start_date |
---|---|
Lisa Bank | 2019/01/20 |
Credit Financial Institute | 2018/03/14 |
Williams Holding | 2019/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:
code | description |
---|---|
101 | 11/30/2019 |
102 | 2019.11.30 |
103 | 30/11/2019 |
104 | 30.11.2019 |
105 | 30-11-2019 |
110 | 11-30-2019 |
111 | 2019/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:
pattern | description |
---|---|
dd | day in range 01-31 |
MM | month in range 01-12 |
yy | 2-digit year |
yyyy | 4-digit year |
HH | hour in range 00-23 |
mm | minutes in range 00-59 |
ss | seconds 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 Types | SQL Date Format | Example |
---|---|---|
Time | hh:mm:ss[.nnnnnnn] | 12:36:30.1231231 |
Date | YYYY-MM-DD | 1979-05-01 |
SmallDateTime | YYYY-MM-DD hh:mm:ss | 1979-05-01 12:36:30 |
DateTime | YYYY-MM-DD hh:mm:ss[.nnn] | 1979-05-01 12:36:30.123 |
DateTime2 | YYYY-MM-DD hh:mm:ss[.nnnnnnn] | 1979-05-01 12:36:30.1231231 |
DateTimeOffset |
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:
Format | Range/Output |
---|---|
dd | 01-31 |
MM | 01-12 |
yy | 00-99 |
HH | 00-23 |
mm | 00-59 |
ss | 00-59 |
tt | AM or PM |
dddd | Day Name e.g. Monday |
MMM | Abbreviated Month Name e.g. JAN, FEB |
MMMM | Full Month Name |
yyyy | four digit year |
d | 1-31 |
ud | US 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 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 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 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.
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 )
(используется для клиента нижнего уровня)
Дополнительные сведения см. в подразделе «Обратная совместимость для клиентов низкого уровня» следующего раздела.
От 1 января 1 года до 31 декабря 9999 года нашей эры (от 15 октября 1582 года до 31 декабря 9999 года для Informatica).
ММ обозначает 2 цифры, которые представляют месяц и принимают значения от 01 до 12.
ДД обозначает две цифры, представляющие день указанного месяца и принимающие значения от 01 до 31 в зависимости от месяца.
Это значение используется как присоединяемая часть даты при неявном преобразовании данных типа 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 и клиентов низкого уровня.
Преобразование данных типа Date и TimeПри преобразовании в типы данных даты и времени SQL Server отвергает все значения, которые он не распознает как значения даты или времени. Сведения об использовании функций CAST и CONVERT c данными типов даты и времени см. в статье Функции CAST и CONVERT (Transact-SQL). Преобразование даты в другие типы данных даты и времениВ этом разделе описывается, что происходит при преобразовании типа данных date в другие типы даты и времени. Преобразование в time(n) завершается сбоем, и появляется сообщение об ошибке 206: «Конфликт типов операндов: date несовместим с time». Преобразование строковых литералов в датуПреобразование строковых литералов в типы данных даты и времени разрешается, если все части строк записаны в допустимом формате. Иначе возникает ошибка времени выполнения. Явные или скрытые преобразования, в которых не задан стиль преобразования типов данных даты и времени в строковые литералы, будут проведены в формате по умолчанию для текущего сеанса. В таблице ниже приводятся правила преобразования строковых литералов в тип данных date.
ПримерыВ следующем примере сравниваются результаты приведения строкового типа к каждому из типов данных date и time. Источники информации:
|