Содержание

Функции и типы данных даты и времени — SQL Server (Transact-SQL)

  • Чтение занимает 7 мин

В этой статье

Применимо к:Applies to: SQL ServerSQL Server (все поддерживаемые версии) SQL ServerSQL Server (all supported versions) База данных SQL AzureAzure SQL DatabaseБаза данных SQL AzureAzure SQL Database Управляемый экземпляр SQL AzureAzure SQL Managed InstanceУправляемый экземпляр SQL AzureAzure SQL Managed Instance Azure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsПрименимо к:Applies to: SQL ServerSQL Server (все поддерживаемые версии) SQL ServerSQL Server (all supported versions) База данных SQL AzureAzure SQL DatabaseБаза данных SQL AzureAzure SQL Database Управляемый экземпляр SQL AzureAzure SQL Managed InstanceУправляемый экземпляр SQL AzureAzure SQL Managed Instance Azure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse AnalyticsAzure Synapse Analytics

В разделах этой статьи представлен обзор всех типов данных и функций даты и времени Transact-SQLTransact-SQL. The sections in this topic cover all Transact-SQLTransact-SQL date and time data types and functions.

Типы данных даты и времениDate and Time data types

Типы данных даты и времени Transact-SQLTransact-SQL перечислены в следующей таблице:The Transact-SQLTransact-SQL date and time data types are listed in the following table:

Тип данныхData typeФорматFormatДиапазонRangeТочностьAccuracyОбъем памяти (в байтах)Storage size (bytes)Определяемая пользователем точность в долях секундыUser-defined fractional second precisionСмещение часового поясаTime zone offset
timetimeчч:мм:сс[.ннннннн]hh:mm:ss[.nnnnnnn]От 00:00:00.0000000 до 23:59:59.999999900:00:00.0000000 through 23:59:59.9999999100 наносекунд100 nanosecondsот 3 до 53 to 5ДаYesнетNo
datedateГГГГ-ММ-ДДYYYY-MM-DDОт 0001-01-01 до 31.
12.990001-01-01 through 9999-12-31
1 день1 day33нетNoнетNo
smalldatetimesmalldatetimeГГГГ-ММ-ДД чч:мм:ссYYYY-MM-DD hh:mm:ssОт 01.01.1900 до 06.06.20791900-01-01 through 2079-06-061 минута1 minute44нетNoнетNo
datetimedatetimeГГГГ-ММ-ДД чч:мм:сс[.ннн]YYYY-MM-DD hh:mm:ss[.nnn]От 01.01.1753 до 31.12.99991753-01-01 through 9999-12-310,00333 секунды0.00333 second88нетNoнетNo
datetime2datetime2ГГГГ-ММ-ДД чч:мм:сс[.ннннннн]YYYY-MM-DD hh:mm:ss[.nnnnnnn]От 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.99999990001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999100 наносекунд100 nanosecondsОт 6 до 86 to 8ДаYesнетNo
datetimeoffsetdatetimeoffsetГГГГ-ММ-ДД чч:мм:сс[.ннннннн] [+|-]чч:ммYYYY-MM-DD hh:mm:ss[. nnnnnnn] [+|-]hh:mmОт 0001-01-01 00:00:00.0000000 до 9999-12-31 23:59:59.9999999 (время в формате UTC)0001-01-01 00:00:00.0000000 through 9999-12-31 23:59:59.9999999 (in UTC)100 наносекунд100 nanosecondsОт 8 до 108 to 10ДаYesДаYes

Примечание

Тип данных Transact-SQLTransact-SQL rowversion не относится к типам данных даты и времени.The Transact-SQLTransact-SQL rowversion data type is not a date or time data type. Тип данных timestamp является устаревшим синонимом rowversion.timestamp is a deprecated synonym for rowversion.

Функции даты и времениDate and Time functions

В следующих таблицах приводятся функции даты и времени Transact-SQLTransact-SQL.The following tables list the Transact-SQLTransact-SQL date and time functions. Дополнительные сведения о детерминизме см. в статье Детерминированные и недетерминированные функции.

See Deterministic and Nondeterministic Functions for more information about determinism.

Функции, возвращающие значения системной даты и времениFunction That Return System Date and Time Values

Transact-SQLTransact-SQL наследует все значения системной даты и времени от операционной системы компьютера, на котором работает экземпляр SQL ServerSQL Server.derives all system date and time values from the operating system of the computer on which the instance of SQL ServerSQL Server runs.

Высокоточные функции системной даты и времениHigher-Precision System Date and Time Functions

SQL Server 2019 (15.x)SQL Server 2019 (15.x) получает значения даты и времени с помощью функции GetSystemTimeAsFileTime() Windows API.derives the date and time values through use of the GetSystemTimeAsFileTime() Windows API. Точность зависит от физического оборудования и версии Windows, в которой запущен экземпляр SQL ServerSQL Server.The accuracy depends on the computer hardware and version of Windows on which the instance of SQL ServerSQL Server running.

Точность возвращаемых значений этого API-интерфейса задана равной 100 нс.This API has a precision fixed at 100 nanoseconds. Точность может быть определена с помощью метода GetSystemTimeAdjustment() API-интерфейса Windows.Use the GetSystemTimeAdjustment() Windows API to determine the accuracy.

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
SYSDATETIMESYSDATETIMESYSDATETIME ()SYSDATETIME ()Возвращает значение типа datetime2(7) , которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime2(7) value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение не содержит смещение часового пояса.The returned value does not include the time zone offset.datetime2(7)datetime2(7)НедетерминированнаяNondeterministic
SYSDATETIMEOFFSETSYSDATETIMEOFFSETSYSDATETIMEOFFSET ( )SYSDATETIMEOFFSET ( )Возвращает значение типа datetimeoffset(7) , которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server. Returns a datetimeoffset(7) value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение содержит смещение часового пояса.The returned value includes the time zone offset.datetimeoffset(7)
datetimeoffset(7)
НедетерминированнаяNondeterministic
SYSUTCDATETIMESYSUTCDATETIMESYSUTCDATETIME ( )SYSUTCDATETIME ( )Возвращает значение типа datetime2(7) , которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime2(7) value containing the date and time of the computer on which the instance of SQL ServerSQL Server is running. Функция возвращает значения даты и времени в формате UTC.The function returns the date and time values as UTC time (Coordinated Universal Time).datetime2(7)datetime2(7)НедетерминированнаяNondeterministic
Функции системной даты и времени меньшей точностиLower-Precision System Date and Time Functions
КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
CURRENT_TIMESTAMPCURRENT_TIMESTAMPCURRENT_TIMESTAMPCURRENT_TIMESTAMPВозвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server. Returns a datetime value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение не содержит смещение часового пояса.The returned value does not include the time zone offset.datetimedatetimeНедетерминированнаяNondeterministic
GETDATEGETDATEGETDATE ( )GETDATE ( )Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server.Returns a datetime value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Возвращаемое значение не содержит смещение часового пояса.The returned value does not include the time zone offset.datetimedatetimeНедетерминированнаяNondeterministic
GETUTCDATEGETUTCDATEGETUTCDATE ( )GETUTCDATE ( )Возвращает значение типа datetime, которое содержит дату и время компьютера, на котором запущен экземпляр SQL ServerSQL Server. Returns a datetime value containing the date and time of the computer on which the instance of SQL ServerSQL Server runs. Функция возвращает значения даты и времени в формате UTC.The function returns the date and time values as UTC time (Coordinated Universal Time).datetimedatetimeНедетерминированнаяNondeterministic

Функции, возвращающие компоненты даты и времениFunctions That Return Date and Time Parts

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
DATENAMEDATENAMEDATENAME ( datepart , date )DATENAME ( datepart , date )Возвращает строку символов, представляющую указанную часть datepart заданного типа date.Returns a character string representing the specified datepart of the specified date.nvarcharnvarcharНедетерминированнаяNondeterministic
DATEPARTDATEPARTDATEPART ( datepart , date )DATEPART ( datepart , date )Возвращает целое число, представляющее указанную часть datepart заданного типа date.Returns an integer representing the specified datepart of the specified date.intintНедетерминированнаяNondeterministic
DAYDAYDAY ( date )DAY ( date )Возвращает целое число, представляющее часть дня указанного типа date.Returns an integer representing the day part of the specified date.intintДетерминированноеDeterministic
MONTHMONTHMONTH ( date )MONTH ( date )Возвращает целое число, представляющее часть месяца указанного типа date. Returns an integer representing the month part of a specified date.intintДетерминированноеDeterministic
YEARYEARYEAR ( date )YEAR ( date )Возвращает целое число, представляющее часть года указанного типа date.Returns an integer representing the year part of a specified date.intintДетерминированноеDeterministic

Функции, возвращающие значения даты и времени из их компонентовFunctions That Return Date and Time Values from Their Parts

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
DATEFROMPARTSDATEFROMPARTSDATEFROMPARTS ( year, month, day )DATEFROMPARTS ( year, month, day )Возвращает значение date, соответствующее указанному числу, месяцу и году. Returns a date value for the specified year, month, and day.datedateДетерминированноеDeterministic
DATETIME2FROMPARTSDATETIME2FROMPARTSDATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision)DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision)Возвращает значение datetime2, соответствующее указанной дате и времени с заданной точностью.Returns a datetime2 value for the specified date and time, with the specified precision.datetime2( precision )datetime2( precision )ДетерминированноеDeterministic
DATETIMEFROMPARTSDATETIMEFROMPARTSDATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds)DATETIMEFROMPARTS ( year, month, day, hour, minute, seconds, milliseconds)Возвращает значение datetime, соответствующее указанной дате и времени. Returns a datetime value for the specified date and time.datetimedatetimeДетерминированноеDeterministic
DATETIMEOFFSETFROMPARTSDATETIMEOFFSETFROMPARTSDATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision)DATETIMEOFFSETFROMPARTS ( year, month, day, hour, minute, seconds, fractions, hour_offset, minute_offset, precision)Возвращает значение datetimeoffset для указанных даты и времени с указанными смещением и точностью.Returns a datetimeoffset value for the specified date and time, with the specified offsets and precision.datetimeoffset( precision )datetimeoffset( precision )ДетерминированноеDeterministic
SMALLDATETIMEFROMPARTSSMALLDATETIMEFROMPARTSSMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )SMALLDATETIMEFROMPARTS ( year, month, day, hour, minute )Возвращает значение smalldatetime, соответствующее указанной дате и времени. Returns a smalldatetime value for the specified date and time.smalldatetimesmalldatetimeДетерминированноеDeterministic
TIMEFROMPARTSTIMEFROMPARTSTIMEFROMPARTS ( hour, minute, seconds, fractions, precision )TIMEFROMPARTS ( hour, minute, seconds, fractions, precision )Возвращает значение time, соответствующее указанному времени с заданной точностью.Returns a time value for the specified time, with the specified precision.time( precision )time( precision )ДетерминированноеDeterministic

Функции, возвращающие значения разности даты и времениFunctions That Return Date and Time Difference Values

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
DATEDIFFDATEDIFFDATEDIFF ( datepart , startdate , enddate )DATEDIFF ( datepart , startdate , enddate )Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами. Returns the number of date or time datepart boundaries, crossed between two specified dates.intintДетерминированноеDeterministic
DATEDIFF_BIGDATEDIFF_BIGDATEDIFF_BIG ( datepart , startdate , enddate )DATEDIFF_BIG ( datepart , startdate , enddate )Возвращает количество границ даты или времени datepart, пересекающихся между двумя указанными датами.Returns the number of date or time datepart boundaries, crossed between two specified dates.bigintbigintДетерминированноеDeterministic

Функции, изменяющие значения даты и времениFunctions That Modify Date and Time Values

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
DATEADDDATEADDDATEADD (datepart , number , date )DATEADD (datepart , number , date )Возвращает новое значение datetime, добавляя интервал к указанной части datepart заданной даты date. Returns a new datetime value by adding an interval to the specified datepart of the specified date.Тип данных аргумента dateThe data type of the date argumentДетерминированноеDeterministic
EOMONTHEOMONTHEOMONTH ( start_date [, month_to_add ] )EOMONTH ( start_date [, month_to_add ] )Возвращает последний день месяца, содержащего указанную дату, с необязательным смещением.Returns the last day of the month containing the specified date, with an optional offset.Тип возвращаемого значения — это тип аргумента start_date или тип данных date.Return type is the type of the start_date argument, or alternately, the date data type.ДетерминированноеDeterministic
SWITCHOFFSETSWITCHOFFSETSWITCHOFFSET (DATETIMEOFFSET, time_zone)SWITCHOFFSET (DATETIMEOFFSET , time_zone)Функция SWITCHOFFSET изменяет смещение часового пояса для значения DATETIMEOFFSET и сохраняет значение UTC. SWITCHOFFSET changes the time zone offset of a DATETIMEOFFSET value, and preserves the UTC value.Значение datetimeoffset с точностью в долях секунд, заданной в аргументе DATETIMEOFFSETdatetimeoffset with the fractional precision of the DATETIMEOFFSETДетерминированноеDeterministic
TODATETIMEOFFSETTODATETIMEOFFSETTODATETIMEOFFSET (expression , time_zone)TODATETIMEOFFSET (expression , time_zone)TODATETIMEOFFSET преобразует значение типа datetime2 в значение типа datetimeoffset.TODATETIMEOFFSET transforms a datetime2 value into a datetimeoffset value. Функция TODATETIMEOFFSET преобразует значение datetime2 в местное время для указанного time_zone.TODATETIMEOFFSET interprets the datetime2 value in local time, for the specified time_zone.Значение datetimeoffset с точностью в долях секунд, заданной в аргументе datetimedatetimeoffset with the fractional precision of the datetime argumentДетерминированноеDeterministic

Функции, устанавливающие или возвращающие функции формата сеансаFunctions That Set or Return Session Format Functions

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
@@DATEFIRST@@DATEFIRST@@DATEFIRST@@DATEFIRSTВозвращает текущее значение параметра SET DATEFIRST для сеанса. Returns the current value, for the session, of SET DATEFIRST.tinyinttinyintНедетерминированнаяNondeterministic
SET DATEFIRSTSET DATEFIRSTSET DATEFIRST { number | @ number_var }SET DATEFIRST { number | @number_var }Устанавливает первый день недели в виде числа от 1 до 7.Sets the first day of the week to a number from 1 through 7.НеприменимоNot applicableНеприменимоNot applicable
SET DATEFORMATSET DATEFORMATSET DATEFORMAT { format | @ format_var }SET DATEFORMAT { format | @format_var }Задает порядок составляющих даты (месяц/день/год) для ввода данных типа datetime или smalldatetime.Sets the order of the dateparts (month/day/year) for entering datetime or smalldatetime data.НеприменимоNot applicableНеприменимоNot applicable
@@LANGUAGE@@LANGUAGE@@LANGUAGE@@LANGUAGEВозвращает название использующегося в настоящий момент языка.Returns the name of the language in current used. Функция @@LANGUAGE не является функцией даты или времени.@@LANGUAGE is not a date or time function. Однако на данные, выводимые функциями даты, могут повлиять настройки языка.However, the language setting can affect the output of date functions.НеприменимоNot applicableНеприменимоNot applicable
SET LANGUAGESET LANGUAGESET LANGUAGE { [ N ] language | @ language_var }SET LANGUAGE { [ N ] language | @language_var }Устанавливает языковую среду сеанса и системных сообщений.Sets the language environment for the session and system messages. SET LANGUAGE не является функцией даты или времени.SET LANGUAGE is not a date or time function. Однако на данные, выводимые функциями даты, влияет параметр языка.However, the language setting affects the output of date functions.НеприменимоNot applicableНеприменимоNot applicable
sp_helplanguagesp_helplanguagesp_helplanguage [ [ @language = ] language ]sp_helplanguage [ [ @language = ] language ]Возвращает сведения о формате даты всех поддерживаемых языков.Returns information about date formats of all supported languages. sp_helplanguage не является хранимой процедурой даты или времени.sp_helplanguage is not a date or time stored procedure. Однако на данные, выводимые функциями даты, влияет параметр языка.However, the language setting affects the output of date functions.НеприменимоNot applicableНеприменимоNot applicable

Функции, проверяющие значения даты и времениFunctions That Validate Date and Time Values

КомпонентFunctionСинтаксисSyntaxВозвращаемое значениеReturn valueТип возвращаемых данныхReturn data typeДетерминизмDeterminism
ISDATEISDATEISDATE ( expression )ISDATE ( expression )Определяет, является ли входное выражение типа datetime или smalldatetime допустимым значением даты или времени.Determines whether a datetime or smalldatetime input expression has a valid date or time value.intintФункция ISDATE детерминирована, только если используется совместно с функцией CONVERT и если заданный параметр стиля CONVERT не равен 0, 100, 9 или 109.ISDATE is deterministic only used with the CONVERT function, when the CONVERT style parameter is specified, and when style is not equal to 0, 100, 9, or 109.
РазделTopicОписаниеDescription
FORMATFORMATВозвращает значение в указанных формате и культуре (не обязательно).Returns a value formatted with the specified format and optional culture. Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT.Use the FORMAT function for locale-aware formatting of date/time and number values as strings.
Функции CAST и CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)Предоставляет сведения о преобразовании значений даты и времени в строковые литералы и обратно, а также в другие форматы даты и времени.Provides information about the conversion of date and time values to and from string literals, and other date and time formats.
Написание инструкций Transact-SQL, адаптированных к международному использованиюWrite International Transact-SQL StatementsПредоставляет рекомендации относительно переносимости баз данных и приложений баз данных, использующих инструкции Transact-SQLTransact-SQL, с одного языка на другой или в многоязычную среду. Provides guidelines for portability of databases and database applications that use Transact-SQLTransact-SQL statements from one language to another, or that support multiple languages.
Скалярные функции ODBC (Transact-SQL)ODBC Scalar Functions (Transact-SQL)Предоставляет сведения о скалярных функциях ODBC, которые могут использоваться в инструкциях Transact-SQLTransact-SQL.Provides information about ODBC scalar functions available for use in Transact-SQLTransact-SQL statements. К ним относятся функции даты и времени ODBC.This includes ODBC date and time functions.
AT TIME ZONE (Transact-SQL)AT TIME ZONE (Transact-SQL)Обеспечивает преобразование часовых поясов.Provides time zone conversion.

См. также разделSee also

Функция DATE_FORMAT — преобразование форматов даты

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

К примеру, из год-месяц-день можно сделать день.месяц.год или месяц—год

См. также функцию TIME_FORMAT, которая меняет формат вывода времени.

Можно использовать следующие команды, чтобы сделать нужный формат вывода:

Все примеры будут по этой таблице workers, если не сказано иное:

В данном примере при выборке создается новое поле, в котором будет лежать дата в другом формате:

SELECT *, DATE_FORMAT(date, '%d.%m.%Y') as new_date FROM workers

SQL запрос выберет следующие строки:

Команда Описание
%d День месяца, число от 00 до 31.
%e День месяца, число от 0 до 31.
%m Месяц, число от 01 до 12.
%c Месяц, число от 1 до 12.
%Y Год, число, 4 цифры.
%y Год, число, 2 цифры.
%j День года, число от 001 до 366.
%H Час, число от 00 до 23.
%k Час, число от 0 до 23.
%h Час, число от 01 до 12.
%I Час, число от 01 до 12.
%l Час, число от 1 до 12.
%i Минуты, число от 00 до 59.
%S Секунды, число от 00 до 59.
%s Секунды, число от 00 до 59.
%w День недели (0 — воскресенье, 1 — понедельник).
%W Название дня недели по-английски.
%a Сокращенный день недели по-английски.
%M Название месяца по-английски.
%b Сокращенный месяц по-английски.
%D День месяца с английским суффиксом (1st, 2nd, 3rd и т.д.).
%r Время, 12-часовой формат (hh:mm:ss [AP]M).
%T Время, 24-часовой формат (hh:mm:ss).
%p AM или PM.
%U Неделя, где воскресенье считается первым днем недели, число от 00 до 53.
%u Неделя, где понедельник считается первым днем недели, число от 00 до 53.
%V Неделя, где воскресенье считается первым днем недели, число от 01 до 53.
Используется с `%X’.
%v Неделя, где понедельник считается первым днем недели, число от 01 до 53.
Используется с `%x’.
%X Год для недели, где воскресенье считается первым днем недели, число, 4 цифры.
Используется с ‘%V’.
%x Год для недели, где воскресенье считается первым днем недели, число, 4 разряда.
Используется с ‘%v’.
%% Символ `%’.
id
айди
name
имя
date
дата регистрации
new_date
дата в новом формате
1Дима2010-03-01 12:01:0201. 03.2010
2Петя2011-04-02 13:02:0302.04.2011
3Вася2012-05-03 14:03:0403.05.2012

Типы данных даты и времени

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

Типы данных DATETIME, DATE, TIME

Тип данных DATETIME используется для величин, содержащих информацию как о дате, так и о времени в формате ‘YYYY-MM-DD HH:MM:SS’

Тип данных DATE используется для величин с информацией только о дате в формате ‘YYYY-MM-DD’. Поддерживается диапазон величин от ‘1000-01-01’ до ‘9999-12-31’.

Тип данных TIME используется для хранения значений времени в формате HH.MM.SS[.ssss]

Тип данных YEAR

MySQL Server поддерживает однобайтный тип данных YEAR, предназначенный для представления значений года в формате YYYY. Диапазон возможных значений — от 1901 до 2155.

Величины типа YEAR могут быть заданы в различных форматах:

  • Как четырехзначная строка в интервале значений от ‘1901’ до ‘2155’.
  • Как четырехзначное число в интервале значений от 1901 до 2155.
  • Как двухзначная строка в интервале значений от ’00’ до ’99’. Величины в интервалах от ’00’ до ’69’ и от ’70’ до ’99’ при этом преобразуются в величины YEAR в интервалах от 2000 до 2069 и от 1970 до 1999 соответственно.
  • Как двухзначное число в интервале значений от 1 до 99. Величины в интервалах от 1 до 69 и от 70 до 99 при этом преобразуются в величины YEAR в интервалах от 2001 до 2069 и от 1970 до 1999 соответственно. Необходимо принять во внимание, что интервалы для двухзначных чисел и двухзначных строк несколько различаются, так как нельзя указать «ноль» непосредственно как число и интерпретировать его как 2000. Необходимо задать его как строку ‘0’ или ’00’, или же оно будет интерпретировано как 0000.

Недопустимые величины YEAR преобразуются в 0000.

Тип данных TIMESTAMP

Назначение типа данных timestamp в MS SQL Server и MySQL Server значительно отличается.

В языке Transcat SQL, используемом в MS SQL Server тип данных, TIMESTAMP представляет собой автоматически сформированные уникальные двоичные числа. При произведении любых изменений в строке значение TIMESTAMP будет обновлено. Таким образом, столбец типа TIMESTAMP можно использовать, чтобы определить, было ли произведено изменение какого-либо значения в строке с момента ее последнего считывания. В таблице может быть только один столбец типа TIMESTAMP.

В MySQL Server тип столбца TIMESTAMP используется для автоматической записи текущих даты и времени при выполнении операций вставки или обновления. Допускается наличие нескольких столбцов типа TIMESTAMP в таблице, но в этом случае автоматически обновляется только первый из них. Столбец типа TIMESTAMP можно установить в значение, отличное от текущих даты и времени путем явного указания значения столбца при выполнении операций вставке и обновлении данных.

текущая дата и другие функции даты в времени

Пример 1. Сформировать список актеров старше 70 лет. Пишем следующий запрос:

SELECT FName, LName, BirthDate FROM ACTOR WHERE TIMESTAMPDIFF(YEAR, BirthDate, CURDATE()) > 70

В этом запросе вычисляется разница между текущей датой CURDATE() и датой рождения актёра BirthDate, содержащейся в таблице ACTOR. Для вычисления разницы применена функция TIMESTAMPDIFF(). Ключевое слово YEAR — задаёт единицу измерения — в годах интервала между датами. Вычисленное значение и результат его сравнения с числом 70 вполне пригодны в качестве условия выборки в секции WHERE. Следует учесть, что функция TIMESTAMPDIFF() существует лишь в MySQL. В других диалектах SQL для этого есть функция DATEDIFF, а для задания единицы измерения применяются различные ключевые слова в различных вариантах написания.

Для вычисления разницы дат можно использовать и оператор «минус». Это сделано в следующем примере.

Пример 2. Вывести список актеров, которые не задействованы в новых постановках (в постановках последних 3 лет). Использовать CURDATE(), NOT IN. Запрос будет следующим:

SELECT fname, lname FROM actor WHERE actor_id NOT IN(SELECT actor_id FROM team WHERE play_id IN(SELECT play_id FROM play WHERE YEAR(premieredate) — YEAR(CURDATE())

В этом запросе задействована функция YEAR(). Аргументами её являются дата премьеры постановки premieredate из таблицы play и текущая дата. Для вычисления разницы использован оператор «минус». Он имеет больший приоритет по сравнению с оператором сравнения и поэтому выполняется первым. Вычисленнное выражение сравнивается с числом 3 и подходящие значения служат условием выборки из таблицы play, содержащей данные о постановках. Этот подзапрос — самый глубокий в «матрёшке» целого запроса. Подзапрос более высокого уровня из таблицы team, содержащей данные о ролях, выбирает идентификаторы актёров, с помощью предиката IN. Выбираются те актёры, которые участвовали в постановках трёх послежних лет. И, наконец, самый внешний запрос к таблице actor выбирает значения с отрицанием (NOT IN) значения предыдущего подзапроса.

Далее — пример использования соединения таблиц, среди которых из одной выбирается дата для вычисления разницы с текущей датой.

Пример 3. Сформировать список актеров с их стажем (в днях). Использовать CURDATE(), GROUP BY. Запрос будет следующим:

SELECT DISTINCT a.Actor_ID, a.FName, a.LName, CURDATE() — p1. PremiereDate AS ExpDays FROM Play p1 JOIN Team t1 ON p1.play_id = t1.play_id JOIN Actor a ON t1.actor_id = a.Actor_id WHERE t1.ACTOR_ID = a.Actor_ID ORDER BY ExpDays, a.Actor_ID DESC

В этом запросе разница между текущей датой CURDATE() и датой премьеры постановки PremiereDate из таблицы Play вычисляется как имя столбца в результирующей таблице. Поскольку эти даты имеют один и тот же формат, для вычисления разницы достаточно использовать оператор «минус». Разница вычислена. Но из таблицы Play невозможно напрямую «достучаться» до таблицы Actor, содержащей данные об актёрах. Поэтому используем соединение (JOIN) этой таблицы с таблицей Team, которая уже связана с таблицей Actor при помощи ключа Actor_ID. Соединение таблиц Team и Actor — второе в этой цепочке из трёх таблиц.

Составить SQL запросы с текущей датой самостоятельно, а затем посмотреть решения

CURDATE(), CURRENT_DATE(), CURRENT_DATE — возвращают текущую дату в формате ‘YYYY-MM-DD’ или YYYYDDMM в зависимости от того, вызывается функция в текстовом или числовом контексте.

CURTIME(), CURRENT_TIME(), CURRENT_TIME — возвращают текущее время суток в формате ‘hh-mm-ss’ или hhmmss в зависимости от того, вызывается функция в текстовом или числовом контексте.

NOW() — возвращает текущие дату и время формате ‘YYYY-MM-DD hh:mm:ss’ или YYYYDDMMhhmmss в зависимости от того, вызывается функция в текстовом или числовом контексте.

TIMEDIFF(param1, param2) — возвращает разницу между значениями времени, заданными параметрами param1 и param2.

DATEDIFF(param1, param2) — возвращает разницу между датами param1 и param2. Значения param1 и param2 могут иметь типы DATE или DATETIME, а при вычислении разницы используется лишь часть DATE.

PERIOD_DIFF(param1, param2) — возвращает разницу в месяцах между датами param1 и param2. Значения param1 и param2 могут быть представлены в числовом формате YYYYMM или YYMM.

TIMESTAMPDIFF(interval, param1, param2) — возвращает разницу между значениями датами param1 и param2. Значения param1 и param2 могут быть представлены в форматах ‘YYYY-MM-DD’ или ‘YYYY-MM-DD hh:mm:ss’. Единица измерения разницы задаётся параметром interval. Он может принимать значения FRAC_SECOND (микросекунды), SECOND (секунды), MINUTE (минуты), HOUR (часы), DAY (дни), WEEK (недели), MONTH (месяцы), QUARTER (кварталы), YEAR (годы).

ADDDATE(date, INTERVAL value) — возвращает дату, к которой прибавлено значение value. Ключевое слово INTERVAL обязательно следует в запросе, после него указывается значение value, а затем единицы измерения прибавляемого значения. Ими могут быть SECOND (секунды), MINUTE (минуты), HOUR (часы), MINUTE_SECOND (минуты и секунды), HOUR_MINUTE (часы и минуты), DAY_SECOND (дни, часы минуты и секунды), DAY_MINUTE (дни, часы и минуты), DAY_HOUR (дни и часы), YEAR_MONTH (годы и месяцы).

SUBDATE(date, INTERVAL value) — вычитает из величины даты date произвольный временной интервал и возвращает результат. Ключевое слово INTERVAL обязательно следует в запросе, после него указывается значение value, а затем единицы измерения вычитаемого значения. Возможные единицы измерения — те же, что и для функции ADDDATE().

SUBTIME(datetime, time) — вычитает из величины времени datetime вида ‘YYYY-MM-DD hh:mm:ss’ произвольно заданное значение времени time и возвращает результат.

PERIOD_ADD(period, N) — добавляет N месяцев к значению даты period. Значение period должно быть представлено в числовом формате ‘YYYYMM’ или ‘YYMM’.

TIMESTAMPADD(interval, param1, param2) — прибавляет к дате и времени суток param2 в полном или кратком формате временной интервал param1, единицы измерения которого заданы параметром interval. Возможные единицы измерения — те же, что и для функции TIMESTAMPDIFF().

DATE(datetime) — извлекает из значения даты и времени суток в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только дату, отсекая часы, минуты и секунды.

TIME(datetime) — извлекает из значения даты и времени суток в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только время суток, отсекая дату.

TIMESTAMP(param) — принимает в качестве аргумента дату и время суток в полном или кратком формате и возвращает полный вариант в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’).

DAY(date), DAYOFMONTH(date) — принимают в качестве аргумента дату, и возвращают порядковый номер дня в месяце (от 1 до 31).

DAYNAME(date) — принимает в качестве аргумента дату, и возвращает день недели в виде полного слова на английском языке.

DAYOFWEEK(date) — принимает в качестве аргумента дату, и возвращает порядкоый номер дня недели от 1 (воскресенье) до 7 (суббота).

WEEKDAY(date) — принимает в качестве аргумента дату, и возвращает порядкоый номер дня недели от 0 (понедельник) до 6 (воскресенье).

WEEK(date) — принимает в качестве аргумента дату, и возвращает номер недели в году для этой даты от 0 до 53.

WEEKOFYEAR(datetime) — возвращает порядковый номер недели в году для даты datetime от 1 до 53.

MONTH(datetime) — возвращает числовое значение месяца года от 1 до 12 для даты datetime.

MONTHNAME(datetime) — возвращает строку с названием месяца для даты datetime.

QUARTER(datetime) — возвращает значение квартала от 1 до 4 для даты datetime, которая может быть передана в формате ‘YYYY-MM-DD’ или ‘YYYY-MM-DD hh:mm:ss’.

YEAR(datetime) — возвращает год от 1000 до 9999 для даты datetime.

DAYOFYEAR(date) — возвращает порядковый номер дня в году от 1 до 366 для даты date.

HOUR(datetime) — возвращает значение часа от 0 до 23 для времени datetime.

MINUTE(datetime) — возвращает значение минут от 0 до 59 для времени datetime.

SECOND(time) — возвращает количество секунд для времени суток time, которое задаётся либо в виде строки ‘hh:mm:ss’, либо числа hhmmss.

EXTRACT(type FROM datetime) — принимает дату и время суток datetime и возвращает часть, определяемую параметром type. Значениями параметра могут быть YEAR, MONTH, DAY, HOUR, MINUTE, SECOND.

TO_DAYS(date) — принимает дату date в кратком ‘YYYY-MM-DD’ или полном формате ‘YYYY-MM-DD hh:mm:ss’ и возвращает количество дней, прошедших с нулевого года.

FROM_DAYS(N) — принимает количество дней N, прошедших с нулевого года, и возвращает дату в формате ‘YYYY-MM-DD’.

UNIX_TIMESTAMP(), UNIX_TIMESTAMP(datetime) — если параметр не указан, то возвращает количество секунд, прошедших с 00:00 1 января 1970 года. Если параметр datetime указан (в кратком ‘YYYY-MM-DD’ или полном формате ‘YYYY-MM-DD hh:mm:ss’), то возвращает разницу в секундах между 00:00 1 января 1970 года и датой datetime.

FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp, format) — принимает количество секунд, прошедших с 00:00 1 января 1970 года и возвращает дату и время суток в виде строки ‘YYYY-MM-DD hh:mm:ss’ или в виде числа YYYYDDMMhhmmss в зависимости от того, вызвана функция в строковом или числовом контексте.

TIME_TO_SEC(time) — принимает время суток time в формате ‘hh:mm:ss’ и возвращает количество секунд, прошедших с начала суток.

SEC_TO_TIME(seconds) — принимает количество секунд seconds, прошедших с начала суток и возвращает время в формате ‘hh:mm:ss’ или hhmmss в зависимости от того, вызвана функция в строковом или числовом контексте.

MAKEDATE(year, dayofyear) — принимает год year, номер дня в году dayofyear и возвращает дату в формате ‘YYYY-MM-DD’.

MAKETIME(hour, minute, second) — принимает часы hour, минуты minute и секунды second и возвращает время суток в формате ‘hh:mm:ss’.

Поделиться с друзьями

Реляционные базы данных и язык SQL

База Данных MySQL Работа с датами



Даты SQL

Самая сложная часть при работе с датами заключается в том, чтобы убедиться, что формат даты, которую вы пытаетесь вставить, совпадает с форматом столбца Date в базе данных.

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


Типы данных дат SQL

MySQL поставляется со следующими типами данных для хранения даты или значения даты/времени в базе данных:

  • DATE — format YYYY-MM-DD
  • DATETIME — format: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP — format: YYYY-MM-DD HH:MI:SS
  • YEAR — format YYYY or YY

SQL Server поставляется со следующими типами данных для хранения даты или значения даты и времени в базе данных:

  • DATE — format YYYY-MM-DD
  • DATETIME — format: YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME — format: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP — format: a unique number

Примечание: Типы дат выбираются для столбца при создании новой таблицы в базе данных!


SQL работа с датами

Вы можете сравнить две даты легко, если нет времени компонент участие!

Предположим, что у нас есть следующая таблица «Orders»:

OrderIdProductNameOrderDate
1Geitost2008-11-11
2Camembert Pierrot2008-11-09
3Mozzarella di Giovanni2008-11-11
4Mascarpone Fabioli2008-10-29

Теперь мы хотим выбрать записи с OrderDate «2008-11-11» из таблицы выше.

Мы используем следующую инструкцию SELECT:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Результирующий набор будет выглядеть так:

OrderIdProductNameOrderDate
1Geitost2008-11-11
3Mozzarella di Giovanni2008-11-11

Теперь предположим, что таблица «Orders» выглядит так (Обратите внимание на компонент Time в столбце «OrderDate»):

OrderIdProductNameOrderDate
1Geitost2008-11-11 13:23:44
2Camembert Pierrot2008-11-09 15:45:21
3Mozzarella di Giovanni2008-11-11 11:12:01
4Mascarpone Fabioli2008-10-29 14:56:59

Если мы используем ту же инструкцию SELECT, как указано выше:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Мы не получим результата! Это происходит потому, что запрос ищет только даты без временной части.

Совет: Чтобы ваши запросы были простыми и простыми в обслуживании, не допускайте временных компонентов в ваших датах!


MS SQL Server: Формат даты

     Для вывода даты в формате DD.MM.YYYY

SomeDate = CONVERT(VarChar(50), getdate(), 104)

   Выведется текущая дата в указанном формате. Формат указывается цифрами, в данном случае 104. 

      Остальные значения:

SELECT CONVERT(varchar, getdate(), 2)    — ‘yy.mm.dd’
SELECT CONVERT(varchar, getdate(), 3)    — ‘dd/mm/yy’
SELECT CONVERT(varchar, getdate(), 4)    — ‘dd.mm.yy’
SELECT CONVERT(varchar, getdate(), 5)    — ‘dd-mm-yy’
SELECT CONVERT(varchar, getdate(), 6)    — ‘dd mmm yy’
SELECT CONVERT(VarChar, GETDATE(), 101)  — ‘mm/dd/yyyy’
SELECT CONVERT(VarChar, GETDATE(), 102)  — ‘yyyy.mm.dd’
SELECT CONVERT(VarChar, GETDATE(), 103)  — ‘dd/mm/yyyy’
SELECT CONVERT(VarChar, GETDATE(), 104)  — ‘dd.mm.yyyy’
SELECT CONVERT(varchar, GETDATE(), 105)  — ‘dd-mm-yyy’
SELECT CONVERT(varchar, GETDATE(), 111)  — ‘yyyy/mm/dd’
SELECT CONVERT(varchar, GETDATE(), 112)  — ‘yyyymmdd’

SELECT CONVERT(varchar,GETDATE(),108) ‘hh:mm:ss’
SELECT CONVERT(varchar,GETDATE(),114) ‘hh:mm:ss:mmm’
SELECT CONVERT(varchar,GETDATE(),113) ‘dd Mmm yyyy hh:mm:ss:mmm’
SELECT CONVERT(VarChar(50), GETDATE(), 100) ‘mmm dd yyyy mm:ss AM’

 
     и еще: 

SELECT CONVERT(varchar,GETDATE(),0)
Return Value = Jun 6 2007 11:07PM
SELECT CONVERT(varchar,GETDATE(),100)
Return Value = Jun 6 2007 11:07PM

SELECT CONVERT(varchar,GETDATE(),1)
Return Value = 06/06/07
SELECT CONVERT(varchar,GETDATE(),101)
Return Value = 06/06/2007

SELECT CONVERT(varchar,GETDATE(),2)
Return Value = 07. 06.06
SELECT CONVERT(varchar,GETDATE(),102)
Return Value = 2007.06.06

SELECT CONVERT(varchar,GETDATE(),3)
Return Value = 06/06/07
SELECT CONVERT(varchar,GETDATE(),103)
Return Value = 06/06/2007

SELECT CONVERT(varchar,GETDATE(),4)
Return Value = 06.06.07
SELECT CONVERT(varchar,GETDATE(),104)
Return Value = 06.06.2007

SELECT CONVERT(varchar,GETDATE(),5)
Return Value = 06-06-07
SELECT CONVERT(varchar,GETDATE(),105)
Return Value = 06-06-2007

SELECT CONVERT(varchar,GETDATE(),6)
Return Value = 06 Jun 07
SELECT CONVERT(varchar,GETDATE(),106)
Return Value = 06 Jun 2007

SELECT CONVERT(varchar,GETDATE(),7)
Return Value = Jun 06, 07
SELECT CONVERT(varchar,GETDATE(),107)
Return Value = Jun 06, 2007

SELECT CONVERT(varchar,GETDATE(),8)
Return Value = 23:38:49
SELECT CONVERT(varchar,GETDATE(),108)
Return Value = 23:38:49

SELECT CONVERT(varchar,GETDATE(),9)
Return Value = Jun 6 2007 11:39:17:060PM
SELECT CONVERT(varchar,GETDATE(),109)
Return Value = Jun 6 2007 11:39:17:060PM

SELECT CONVERT(varchar,GETDATE(),10)
Return Value = 06-06-07
SELECT CONVERT(varchar,GETDATE(),110)
Return Value = 06-06-2007

SELECT CONVERT(varchar,GETDATE(),11)
Return Value = 07/06/06
SELECT CONVERT(varchar,GETDATE(),111)
Return Value = 2007/06/06

SELECT CONVERT(varchar,GETDATE(),12)
Return Value = 070606
SELECT CONVERT(varchar,GETDATE(),112)
Return Value = 20070606

SELECT CONVERT(varchar,GETDATE(),13)
Return Value = 06 Jun 2007 23:40:14:577
SELECT CONVERT(varchar,GETDATE(),113)
Return Value = 06 Jun 2007 23:40:14:577

SELECT CONVERT(varchar,GETDATE(),14)
Return Value = 23:40:29:717
SELECT CONVERT(varchar,GETDATE(),114)
Return Value = 23:40:29:717

SELECT CONVERT(varchar,GETDATE(),20)
Return Value = 2007-06-06 23:40:51
SELECT CONVERT(varchar,GETDATE(),120)
Return Value = 2007-06-06 23:40:51

SELECT CONVERT(varchar,GETDATE(),21)
Return Value = 2007-06-06 23:41:10. 153
SELECT CONVERT(varchar,GETDATE(),121)
Return Value = 2007-06-06 23:41:10.153

SELECT CONVERT(varchar,GETDATE(),126)
Return Value = 2007-06-06T23:41:10.153

SELECT CONVERT(varchar,GETDATE(),131)
Return Value = 21/05/1428 11:41:10:153PM

 

Поля дат—ArcGIS Pro | Документация

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

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

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

Отображение дат

Дата сохраняется в поле для дат шейп-файла в формате yyyy-mm-dd. Формат даты в базе геоданных – дата/время (datetime) yyyy-mm-dd hh:mm:ss AM или PM. Настройки в вашей системе Windows определяют способ отображения дат в ArcGIS Pro – М/д /гг, ММ/дд/гг, гг/ММ/дд и т.д. ArcGIS Pro использует системный краткий формат даты (числовой) для отображения дат.

ArcGIS Pro следует настройкам Windows по формату дат.

Вычисление полей дат

При вычислении полей даты калькулятор полей использует функции datetime Python. Некоторые из этих функций поддерживают yyyy-mm-dd hh:mm:ss AM или PM. Но для шейп-файлов часть, относящаяся ко времени (time), отсекается от значения datetime. Например, значение datetime (дата/время) 2002-08-20 12:00:00 PM в шейп-файле сохраняется в виде 2002-08-20.

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

При вычислении дат также можно использовать две последние цифры года. Когда вы вычисляете дату, такую как date_field = dateserial(02,8,20) и указываете две цифры для года (в этом случае – 02), используются настройки вашей системы, которые определят век. Вы можете настроить эти параметры с помощью параметров региона и времени в Windows.

Выбор объектов с помощью поля дат

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

Описание синтаксиса и особенностей запросов к датам см. в Справочном руководстве по SQL.


Отзыв по этому разделу?

Функции даты

в SQL Server и MySQL


Даты SQL

Самое сложное при работе с датами — убедиться, что формат даты, которую вы пытаетесь вставить, соответствует формату столбца даты в базе данных.

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


Типы данных даты SQL

MySQL поставляется со следующими типами данных для хранения даты или значения даты / времени в базе данных:

  • ДАТА — формат ГГГГ-ММ-ДД
  • DATETIME — формат: YYYY-MM-DD HH: MI: SS
  • TIMESTAMP — формат: ГГГГ-ММ-ДД ЧЧ: MI: SS
  • ГОД — формат ГГГГ или ГГ

SQL Server поставляется со следующими типами данных для хранения даты или значения даты / времени в базе данных:

  • ДАТА — формат ГГГГ-ММ-ДД
  • DATETIME — формат: YYYY-MM-DD HH: MI: SS
  • SMALLDATETIME — формат: ГГГГ-ММ-ДД ЧЧ: MI: SS
  • TIMESTAMP — формат: уникальный номер

Примечание: Типы даты выбираются для столбца при создании новой таблицы в базе данных!


SQL Работа с датами

Вы можете легко сравнить две даты, если в них нет временной составляющей!

Предположим, у нас есть следующая таблица «Заказы»:

Идентификатор заказа Название продукта Дата заказа
1 Geitost 11-11-2008
2 Камамбер Пьеро 2008-11-09
3 Моцарелла ди Джованни 11-11-2008
4 Маскарпоне Фабиоли 29. 10.2008

Теперь мы хотим выбрать записи с OrderDate «2008-11-11» из приведенной выше таблицы.

Мы используем следующий оператор SELECT:

ВЫБЕРИТЕ * ИЗ заказов, ГДЕ OrderDate = ‘2008-11-11’

Результат будет выглядеть так:

Идентификатор заказа Название продукта Дата заказа
1 Geitost 11-11-2008
3 Моцарелла ди Джованни 11-11-2008

Теперь предположим, что таблица «Заказы» выглядит следующим образом (обратите внимание на компонент времени в столбце «Дата заказа»):

Идентификатор заказа Название продукта Дата заказа
1 Geitost 11-11-2008 13:23:44
2 Камамбер Пьеро 2008-11-09 15:45:21
3 Моцарелла ди Джованни 11-11-2008 11:12:01
4 Маскарпоне Фабиоли 2008-10-29 14:56:59

Если мы используем тот же оператор SELECT, что и выше:

ВЫБЕРИТЕ * ИЗ заказов, ГДЕ OrderDate = ‘2008-11-11’

мы не получим результата! Это связано с тем, что запрос ищет только даты без временной части.

Совет: Чтобы ваши запросы были простыми и легкими в обслуживании, не допускайте компонентов времени в ваших датах!



Преобразование даты и времени с помощью SQL Server

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

SQL Server предоставляет ряд параметров, которые можно использовать для форматирования строки даты / времени. Одно из первых соображений — это фактическая необходимая дата / время. Самый распространенный — текущая дата / время с использованием getdate () . Это обеспечивает текущую дату и время в соответствии с сервером, предоставляющим дату и время. Если универсальная дата / время необходимо использовать getutcdate () . Чтобы изменить формат date, вы конвертируете запрошенную дату в строку и указываете номер формата, соответствующий в нужный формат.

Ниже приведен список форматов и пример вывода. Дата использования для всех этих примеров это «2006-12-30 00: 38: 54.840».

Вы также можете форматировать дату или время без разделительных символов, а также объединить строку даты и времени:

Если вы хотите получить список всех допустимых форматов даты и времени, вы можете использовать код ниже и измените @date на GETDATE () или любую другую дату, которую вы хотите использовать. Это выведет только действительные форматы.

ТОЛЬКО ДАТА ФОРМАТЫ
Формат # Запрос Образец
1 выберите преобразование (varchar, getdate (), 1) 30.12.06
2 выберите преобразование (varchar, getdate (), 2) 06.12.30
3 выберите преобразование (varchar, getdate (), 3) 30.12.06
4 выберите преобразование (varchar, getdate (), 4) 30.12.06
5 выберите преобразование (varchar, getdate (), 5) 30-12-06
6 выберите преобразование (varchar, getdate (), 6) 30 декабря 06
7 выберите преобразование (varchar, getdate (), 7) 30 декабря 06 г.
10 выберите преобразование (varchar, getdate (), 10) 12-30-06
11 выберите преобразование (varchar, getdate (), 11) 12.06.30
12 выберите преобразование (varchar, getdate (), 12) 061230
23 выберите преобразование (varchar, getdate (), 23) 30.12.2006
101 выберите преобразование (varchar, getdate (), 101) 30.12.2006
102 выберите преобразование (varchar, getdate (), 102) 2006.12.30
103 выберите преобразование (varchar, getdate (), 103) 30 декабря 2006 г.
104 выберите преобразование (varchar, getdate (), 104) 30.12.2006
105 выберите преобразование (varchar, getdate (), 105) 30-12-2006
106 выберите преобразование (varchar, getdate (), 106) 30 декабря 2006 г.
107 выберите преобразование (varchar, getdate (), 107) 30 декабря 2006 г.
110 выберите преобразование (varchar, getdate (), 110) 30.12.2006
111 выберите преобразование (varchar, getdate (), 111) 30/12/30 2006
112 выберите преобразование (varchar, getdate (), 112) 20061230
ТОЛЬКО ВРЕМЯ ФОРМАТИРУЕТ
8 выберите преобразование (varchar, getdate (), 8) 00:38:54
14 выберите преобразование (varchar, getdate (), 14) 00: 38: 54: 840
24 выберите преобразование (varchar, getdate (), 24) 00:38:54
108 выберите преобразование (varchar, getdate (), 108) 00:38:54
114 выберите преобразование (varchar, getdate (), 114) 00: 38: 54: 840
ФОРМАТ ДАТЫ И ВРЕМЕНИ
0 выберите преобразование (varchar, getdate (), 0) 12 декабря 2006 г. 00:38
9 выберите преобразование (varchar, getdate (), 9) 30 декабря 2006 г. 12:38: 54: 840AM
13 выберите преобразование (varchar, getdate (), 13) 30 декабря 2006 г. 00: 38: 54: 840AM
20 выберите преобразование (varchar, getdate (), 20) 2006-12-30 00:38:54
21 выберите преобразование (varchar, getdate (), 21) 30 декабря 2006 г., 00:38:54.840
22 выберите преобразование (varchar, getdate (), 22) 30.12.06 00:38:54
25 выберите преобразование (varchar, getdate (), 25) 2006-12-30 00: 38: 54.840
100 выберите преобразование (varchar, getdate (), 100) 30 декабря 2006 г. 00:38
109 выберите преобразование (varchar, getdate (), 109) 30 декабря 2006 г. 12:38: 54: 840AM
113 выберите преобразование (varchar, getdate (), 113) 30 декабря 2006 г. 00: 38: 54: 840
120 выберите преобразование (varchar, getdate (), 120) 2006-12-30 00:38:54
121 выберите преобразование (varchar, getdate (), 121) 30 декабря 2006 г., 00:38:54.840
126 выберите преобразование (varchar, getdate (), 126) 2006-12-30T00: 38: 54.840
127 выберите преобразование (varchar, getdate (), 127) 2006-12-30T00: 38: 54.840
ИСЛАМСКИЙ КАЛЕНДАРЬ ДАТЫ
130 выберите преобразование (nvarchar, getdate (), 130)
131 выберите преобразование (nvarchar, getdate (), 131) 12.10.14 27 12:38: 54: 840 AM

Функции и форматы даты преобразования SQL

В этой статье мы рассмотрим различные форматы SQL Convert Date, которые можно использовать при написании SQL-запросов.

Нам нужно работать с данными типа даты в SQL. Иногда разработчикам SQL Server это может быть сложной задачей. Предположим, у вас есть таблица Product с отметкой времени столбца. Он создает временную метку для каждого заказа клиента. С ним вы можете столкнуться со следующими проблемами

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

У нас есть следующие типы данных даты и времени преобразования SQL в SQL Server.

В SQL Server мы использовали встроенные функции, такие как SQL GETDATE () и GetUTCDate () , чтобы предоставить дату и формат сервера в различных форматах.

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

Как подчеркивалось ранее, нам может потребоваться отформатировать дату в разных форматах в соответствии с нашими требованиями. Мы можем использовать функцию SQL CONVERT () в SQL Server для форматирования DateTime в различных форматах.

Синтаксис функции SQ: CONVERT () следующий.

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

Сначала мы объявляем переменную для хранения текущего DateTime с помощью функции SQL GETDATE () со следующим запросом.

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

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

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

Мы можем использовать функцию SQL DATEADD , чтобы добавить определенный период к нашей дате. Предположим, у нас есть требование добавить 1 месяц к текущей дате. Мы можем использовать функцию SQL DATEADD для выполнения этой задачи.

Интервал: Мы можем указать интервал, который нужно добавить в указанную дату.У нас могут быть такие значения, как год, квартал, месяц, день, неделя, час, минута и т. Д.

Число: Указывает номер добавляемого интервала. Например, если мы указали интервал как Месяц, а Число как 2, это означает, что к дате нужно добавить 2 месяца.

В следующем запросе мы хотим добавить 2 месяца к текущей дате.

Вы можете увидеть результат на следующем снимке экрана.

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

Мы можем объединить функции SQL DATEADD и CONVERT для получения вывода в желаемых форматах DateTime. Предположим, в предыдущем примере; нам нужен формат даты MMM DD, YYYY. Мы можем использовать код формата 107, чтобы получить вывод в этом формате.

Выполните следующий код, чтобы получить дату New и ConvertedDate.

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


Форматы даты и времени


Запрос даты преобразования SQL


Выход


Формат даты и времени как
MM / DD / YY

Стандарт : U. S.A.

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 1) как [MM / DD / YY]



Формат даты и времени в формате
ГГ.ММ.ДД формат

Стандартный : ANSI

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 2) как [YY.MM.DD]



Формат даты и времени в формате
ДД / ММ / ГГ

Стандартный : британский / французский

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 3) как [DD / MM / YY]



Формат даты и времени в формате DD. Формат MM.YY

Стандартный : немецкий

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 4) как [DD.MM.YY]



Формат даты и времени в формате
ДД-ММ-ГГ

Стандартный : итальянский

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 5) как [DD-MM-YY]



Формат даты и времени в формате
DD MMM YY

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 6) как [DD MMM YY]



Формат даты и времени в формате
MMM DD, YY

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 7) как [MMM DD, YY]



Формат даты и времени
В ЧЧ: ММ: СС

Стандарт : 24 часа

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 8) как [чч: мм: сс]



Формат даты и времени как
[МММ ДД ГГГГ чч: мм: сс: ммм (AM / PM)]

Стандарт : по умолчанию + миллисекунды

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 9) как [MMM DD YYYY hh: mm: ss: mmm (AM / PM)]



Формат даты и времени в формате
ММ-ДД-ГГ

Стандарт : США

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 10) как [MM-DD-YY]



Формат даты и времени в формате
ГГ / ММ / ДД

Стандарт : ЯПОНИЯ

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 11) как [YY / MM / DD]



Формат даты и времени в формате
ГГММДД

Стандарт : ISO

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 12) как [YYMMDD]



Формат даты и времени в формате
ДД МММ ГГГГ ЧЧ: ММ: СС: МММ

Стандарт: Европа по умолчанию + миллисекунды

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 13) как [ДД МММ ГГГГ ЧЧ: ММ: СС: МММ]



Формат даты и времени в
ЧЧ: ММ: СС: МММ

Стандарт: 24-часовое время с миллисекундами

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 14) как [HH: MM: SS: MMM]



Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС

По умолчанию: Канонический ODBC

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 20) как [YYYY-MM-DD HH: MM: SS]



Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС. ммм

Стандартный : канонический ODBC с миллисекундами

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 21) как [YYYY-MM-DD HH: MM: SS.mmm]



Формат даты и времени в формате
мм / дд / гг чч: мм: сс (AM / PM)

Стандарт : США с временем AM / PM

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 22) как [мм / дд / гг чч: мм: сс (AM / PM)]



Формат даты и времени в формате
[гггг-мм-дд]

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 23) как [yyyy-mm-dd]



Формат даты и времени в формате
[чч: мм: сс]

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 24) как [чч: мм: сс]



Формат даты и времени в формате
[мм-дд-гггг чч: мм: сс. ммм]

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 27) как [мм-дд-гггг чч: мм: сс.ммм]



Формат даты и времени в формате
[МММ ДД ГГГГ ЧЧ: СС (AM / PM)]

Стандарт : По умолчанию

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 100) как [MMM DD YYYY HH: SS (AM / PM)]



Формат даты и времени в формате
[ММ / ДД / ГГГГ]

Стандарт : США

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 101) как [MM / DD / YYYY]



Формат даты и времени в формате
[ГГГГ. MM.DD]

Стандарт : ANSI

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 102) как [YYYY.MM.DD]



Формат даты и времени в формате
ДД / ММ / ГГГГ

Стандартный : британский / французский

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 103) как [ДД / ММ / ГГГГ]



Формат даты и времени в формате
DD.Формат MM.YY

Стандарт : немецкий

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 104) как [ДД / ММ / ГГГГ]



Формат даты и времени в формате
ДД-ММ-ГГ

Стандартный : итальянский

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 105) как [ДД / ММ / ГГГГ]



Формат даты и времени в формате
ДД МММ ГГГГ

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 106) как [ДД МММ ГГГГ]



Формат даты и времени в формате
MMM DD, YYYY

Стандарт : сокращенное название месяца

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 107) как [MMM DD, YYYY]



Формат даты и времени
В ЧЧ: ММ: SS

Стандарт : 24 часа

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 108) как [HH: MM: SS]



Формат даты и времени как
[МММ ДД ГГГГ чч: мм: сс: ммм (AM / PM)]

Стандарт : по умолчанию + миллисекунды

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 109) как [MMM DD YYYY hh: mm: ss: mmm (AM / PM)]



Формат даты и времени в формате
ММ-ДД-ГГ

Стандарт: США

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 110) как [MM-DD-YYYY]



Формат даты и времени в формате
ГГГГ / ММ / ДД

Стандарт : ЯПОНИЯ

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 111) как [YYYY / MM / DD]



Формат даты и времени в формате
ГГГГММДД

Стандарт : ISO

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 112) как [ГГГГММДД]



Формат даты и времени в формате
ДД МММ ГГГГ ЧЧ: ММ: СС: МММ

Стандарт: Европа по умолчанию + миллисекунды

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 113) как [ДД МММ ГГГГ ЧЧ: ММ: СС: МММ]



Формат даты и времени в
ЧЧ: ММ: СС: МММ

Стандарт: 24-часовое время с миллисекундами

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 114) как [ДД МММ ГГГГ ЧЧ: ММ: СС: МММ]



Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС

По умолчанию: Канонический ODBC

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 120) как [YYYY-MM-DD HH: MM: SS]



Формат даты и времени в формате
ГГГГ-ММ-ДД ЧЧ: ММ: СС. ммм

Стандарт: Канонический ODBC с миллисекундами

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 121) как [YYYY-MM-DD HH: MM: SS.mmm]



Формат даты и времени в формате
ГГГГ-ММ-ДДТЧЧ: ММ: СС.ммм

Стандарт : ISO8601

объявить @Existingdate datetime

Set @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 126) как [yyyy-mm-ddThh: mi: ss.mmm]



Формат даты и времени в формате
[ДД МММ ГГГГ чч: ми: сс: ммм (AM / PM)]

Стандарт : исламская дата / дата хиджры

объявить @Existingdate datetime

Установить @ Existingdate = GETDATE ()

Выберите CONVERT (varchar, @ Existingdate, 130) как [дд мон гггг чч: ми: сс: ммм (AM / PM)]


Преобразование формата даты в формат ДД / МММ / ГГГГ в SQL Server

Уже существует несколько ответов и типов форматирования для SQL server 2008. Но этот метод несколько неоднозначен, и вам будет сложно запомнить число, соответствующее определенному формату даты. Поэтому в следующих версиях SQL-сервера есть вариант получше.

Если вы используете SQL Server 2012 или более поздней версии, вам следует использовать функцию Format ()

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

С опцией культуры вы можете указать дату в соответствии с вашими зрителями.

  ОБЪЯВИТЬ @d DATETIME = '01.10.2011';
ВЫБЕРИТЕ ФОРМАТ (@d, 'd', 'en-US') AS 'US English Result'
      , FORMAT (@d, 'd', 'en-gb') AS 'UK English Result'
      , FORMAT (@d, 'd', 'de-de') КАК 'Немецкий результат'
      , FORMAT (@d, 'd', 'zh-cn') AS 'Результат на упрощенном китайском (КНР)';
  
ВЫБЕРИТЕ ФОРМАТ (@d, 'D', 'en-US') AS 'US English Result'
      , FORMAT (@d, 'D', 'en-gb') AS 'UK English Result'
      , FORMAT (@d, 'D', 'de-de') КАК 'Немецкий результат'
      , FORMAT (@d, 'D', 'zh-cn') AS 'Китайский (упрощенный КНР) результат';

Английский (США) Результат Великобритания Английский Результат Немецкий результат Упрощенный китайский (КНР) Результат
---------------- ----------------------------- ----- -------- -------------------------------------
01. 10.2011 10.01.2011 01.10.2011 2011/10/1

Результат на английском языке в США Результат на английском языке в Великобритании Результат на немецком языке Результат на китайском (упрощенный КНР)
---------------------------- ---------------------- ------- ----------------------------- -------------- -------------------------
Суббота, 1 октября 2011 г., 1 октября 2011 г. Самстаг, 1 октября 2011 г. 10 1
   
  

Для решения OP мы можем использовать следующий формат, который уже упоминался @Martin Smith:

  FORMAT (GETDATE (), 'дд / МММ / гггг', 'en-us')
  

Некоторые примеры форматов даты:

Если вам нужны другие форматы дат SQL-сервера, посетите:

  1. Пользовательский формат даты и времени
  2. Стандартный формат даты и времени

Шпаргалка по формату даты SQL Server

В MS SQL Server вы можете использовать функцию CONVERT () для преобразования выражения из одного типа данных в другой тип данных. Когда дело доходит до преобразования значения datetime в символ, существует множество стилей форматирования для вывода.

В этом посте мы собираемся представить все форматы даты, а также соответствующий оператор CONVERT () в SQL Server.

Общий синтаксис для преобразования значения datetime или smalldatetime в символ:

  ВЫБРАТЬ КОНВЕРТ (VARCHAR (n), GETDATE (), стиль)
  

И стиль даты и времени можно выбрать из списка ниже:

Стиль Стандартный Заявление CONVERT Выход
100 По умолчанию для datetime и smalldatetime ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 100) пн дд гггг чч: miAM (или PM)
101 U.С. ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 101) КАК [ММ / ДД / ГГГГ] мм / дд / гггг
102 ANSI ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 102) AS [ГГГГ. ММ.ДД] гггг.мм.дд
103 британский / французский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 103) КАК [ДД / ММ / ГГГГ] дд / мм / гггг
104 Немецкий ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 104) AS [DD.ММ.ГГГГ] дд.мм.гггг
105 Итальянский ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 105) КАК [ДД-ММ-ГГГГ] дд-мм-гггг
106 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (11), GETDATE (), 106) КАК [ДД МЕС ГГГГ] дд пн гггг
107 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (12), GETDATE (), 107) AS [Пн ДД, ГГГГ] пн дд, гггг
108 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 108) чч: миля: сс
109 По умолчанию + миллисекунды ВЫБРАТЬ КОНВЕРТ (VARCHAR (26), GETDATE (), 109) пн дд гггг чч: ми: сс: мммAM (или PM)
110 США ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 110) КАК [ММ-ДД-ГГГГ] мм-дд-гггг
111 ЯПОНИЯ ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (10), GETDATE (), 111) КАК [ГГГГ / ММ / ДД] гггг / мм / дд
112 ISO ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (8), GETDATE (), 112) КАК [ГГГГММДД] ггггммдд
113 Европа по умолчанию + миллисекунды ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (24), GETDATE (), 113) дд пн гггг чч: ми: сс: ммм (24 ч)
114 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (12), GETDATE (), 114) КАК [ЧЧ: МИ: СС: МММ (24Ч)] чч: ми: сс: ммм (24 ч)
120 ODBC канонический ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (19), GETDATE (), 120) гггг-мм-дд чч: ми: сс (24ч)
121 Канонический ODBC (с миллисекундами) по умолчанию для времени, даты, datetime2 и datetimeoffset ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (23), GETDATE (), 121) гггг-мм-дд чч: ми: сс. ммм (24ч)
126 ISO8601 ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (23), GETDATE (), 126) гггг-мм-ддThh: mi: ss.mmm (без пробелов)
130 хиджры ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (26), GETDATE (), 130) дд пн гггг чч: ми: сс: мммAM
131 хиджра ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (25), GETDATE (), 131) дд / мм / гггг чч: ми: сс: мммAM

Нужен хороший инструмент с графическим интерфейсом для MS SQL Server? Попробуйте TablePlus, современный собственный инструмент для нескольких баз данных, включая SQL Server, MySQL, PostgreSQL, SQLite и т. Д.И его можно использовать бесплатно столько, сколько вам нужно.

Загрузите TablePlus для Mac .

Не на Mac? Загрузите TablePlus для Windows .

В Linux? Загрузить TablePlus для Linux

Требуется быстрое редактирование на ходу? Загрузите TablePlus для iOS .

Как отформатировать дату в T-SQL

База данных:
Операторы:
CONVERT (), FORMAT ()
Задача:

Вы хотите отображать значение даты в другом формате в SQL Server.

Пример:

В нашей базе данных есть таблица с именем company с данными в столбцах id (первичный ключ), name и start_date .

id имя start_date
1 Lisa Bank 2019-01-20
2 Кредитно-финансовый институт 2018-03-14
3 Williams Holding 2019-10-28

Для каждой компании давайте преобразуем дату начала в новый формат, «ГГГГ / ММ / ДД», где ГГГГ — год из 4 цифр, ММ — это месяц с двумя цифрами, а DD — день с двумя цифрами.

Решение 1:

Мы будем использовать функцию CONVERT () . Вот запрос, который вы должны написать:

ВЫБРАТЬ
  ПРЕОБРАЗОВАТЬ (NVARCHAR; начальная_дата; 111) КАК новая_дата
ОТ компании;
 

Вот результат:

имя start_date
Lisa Bank 2019/01/20
Кредитно-финансовый институт 2018/03/14
Williams Holding 2019/10 / 28
Обсуждение:

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

Эта функция принимает три аргумента:

  1. Новый тип данных (в нашем примере NVARCHAR).
  2. Выражение или имя столбца, содержащее дату для форматирования (в нашем примере столбец start_date ).
  3. Необязательный код стиля в виде целого числа. (В нашем примере стиль «111» отображает дату с помощью косой черты для разделения частей.)

В таблице ниже представлены наиболее популярные коды стиля даты:

код описание
101 30.11.2019
102 2019.11.30
103 30.11.2019
104 30.11.2019
105 30-11-2019
110 30.11.2019
111 30.11.2019

Полный список стилей форматирования можно найти в документации T-SQL.

Приведенный выше запрос изменил формат даты Lisa Bank 2019-01-20 на строку, содержащую дату «2019/01/20».

Решение 2:

В SQL Server 2012 и более поздних версиях вы можете использовать функцию FORMAT () для изменения форматов даты и времени. Используйте символы ниже, чтобы указать желаемый формат:

образец описание
dd день в диапазоне 01-31
MM месяц в диапазоне 01-12
гг год из 2 цифр
гггг год из 4 цифр
HH час в диапазоне 00-23
мм минут в диапазоне 00-59
сс секунды в диапазоне 00-59

Вот запрос, который можно написать с помощью FORMAT ():

ВЫБРАТЬ
  FORMAT (start_date, ‘yyyy-MM-dd’) КАК новая_дата
ОТ компании;
 

Первый аргумент — это значение типа datetime / date / time для переформатирования.Вторая — это строка, содержащая образец нового формата. Эта функция возвращает тип данных NVARCHAR. Используйте FORMAT () , если вы работаете на SQL Server 2012 или более поздней версии и хотите преобразовать дату / время в строки, содержащие отформатированные даты / время.

SQL DATE Format — форматирование даты SQL Server с помощью Convert, Format

В этой статье мы покажем вам, как выполнить форматирование SQL DATE или форматирование даты и времени SQL Server на примере.

Пример преобразования формата даты SQL

Прежде чем перейти к практическому примеру, позвольте мне объяснить вам список доступных форматов даты преобразования в Sql Server.Для этой демонстрации мы собираемся написать различные запросы формата даты SQL, используя функции CONVERT и FORMAT. Функция ПРЕОБРАЗОВАТЬ предоставляет различные стили форматирования для форматирования даты и времени.

Без века (гг) С веком (гггг) Ввод / вывод Стандартный
от 0 до 100 пн дд гггг чч: мили AM (или PM) Значение по умолчанию для datetime и smalldatetime
1 101 1 = мм / дд / гг
101 = мм / дд / гггг
U. С.
2 102 2 = гг.мм.дд
102 = гггг.мм.дд
ANSI
3 103 3 = дд / мм / гг
103 = дд / мм / гггг
Британский / французский
4 104 4 = дд.мм.гг
104 = дд.мм.гггг
Немецкий
5 105 5 = дд-мм-гг
105 = дд-мм-гггг
Итальянский
6 106 6 = дд мес гг
106 = дд мес гггг
7 107 7 = пн дд, гг
107 = пн дд, гггг
8 108 чч: ми: сс
9 или 109 пн дд гггг чч : mi: ss: mmmmAM (или PM) По умолчанию + миллисекунды
10 110 10 = мм-дд-гг
110 = мм-дд-гггг
США
11 111 11 = гг / мм / дд
111 = гггг / мм / дд
ЯПОНИЯ
12 112 12 = ггммдд
112 = ггггммдд
ISO
13 или 113 дд мон гггг чч: ми: сс: ммм (24 ч) Европа По умолчанию + миллисекунда
14 114 чч: ми : ss: mmm (24h)
20 or 120 yyyy-mm-dd hh: mi: ss (24h) ODBC canonical
21 or 121 гггг-мм-дд чч: ми: сс. mmm (24h) Канонический ODBC с миллисекундами. Это значение по умолчанию для времени, даты, datetime2 и datetimeoffset
126 гггг-мм-ддThh: mi: ss.mmm (без пробелов) ISO8601
127 гггг-мм-ддThh: mi: ss.mmmZ (без пробелов) ISO8601 с часовым поясом Z
130 дд мон гггг чч: ми: сс: ммAM Hijri
131 дд / мм / гггг чч: ми: сс: мммAM Hijri

Пример формата даты преобразования SQL

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

 - Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE ()) AS 'Результат 1';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 0) AS 'Результат 2';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 100) AS 'Результат 3';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 1) AS 'Результат 4';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 101) AS 'Результат 5';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 2) AS 'Результат 6';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 102) AS 'Результат 7'; 

Преобразование формата SQL DATE, пример 2

Этот пример запроса охватывает еще несколько форматов даты в функции преобразования

.
 - Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 3) AS 'Результат 8';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 103) AS 'Результат 9';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 4) AS 'Результат 10';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 104) AS 'Результат 11';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 5) AS 'Результат 12';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 105) AS 'Результат 13';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 6) AS 'Результат 14';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 106) AS 'Результат 15'; 

В этом примере запроса мы показываем несколько других форматов даты в функции преобразования:

 - Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 7) AS 'Результат 16';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 107) AS 'Результат 17';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 8) AS 'Результат 18';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 108) AS 'Результат 19';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 9) AS 'Результат 20';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 109) AS 'Результат 21';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 10) AS 'Результат 22';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 110) AS 'Результат 23'; 

Другой формат даты преобразования

 - Использование функции CONVERT для формата даты SQL Server
--Использование функции CONVERT для формата даты SQL Server
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 11) AS 'Результат 24';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 111) AS 'Результат 25';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 12) AS 'Результат 26';
ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 112) AS 'Результат 27';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 113) AS 'Результат 28';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 14) AS 'Результат 29';
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (20), GETDATE (), 114) AS 'Результат 30';

ВЫБРАТЬ CONVERT (VARCHAR (20), GETDATE (), 20) AS 'Результат 31'; 

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

 - Использование CONVERT для форматирования даты в SQL Server
ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (35), GETDATE (), 21) AS 'Результат 32';

ВЫБРАТЬ CONVERT (VARCHAR (35), GETDATE (), 126) AS 'Результат 33';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (VARCHAR (35), GETDATE (), 127) AS 'Результат 34';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (NVARCHAR (35), GETDATE (), 130) AS 'Результат 35';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (NVARCHAR (35), GETDATE (), 131) AS 'Результат 36'; 

Формат даты SQL с использованием функции FORMAT

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

 - Использование функции FORMAT для формата даты SQL Server
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'd', 'en-US') как 'Результат 1'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'D', 'en-US') как 'Результат 2'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'f', 'en-US') как 'Результат 3'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'F', 'en-US') как 'Результат 4'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'g', 'en-US') как 'Результат 5'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'G', 'en-US') как 'Результат 6'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'm', 'en-US') как 'Результат 7'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'M', 'en-US') AS 'Результат 8' 

Ниже приведен список остальных форматов, доступных в функции формата для формата даты.

 - Использование функции FORMAT для формата даты SQL Server
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'O', 'en-US') как 'Результат 9'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'R', 'en-US') как 'Результат 10'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 's', 'en-US') как 'Результат 11'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'S', 'en-US') как 'Результат 12'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 't', 'en-US') как 'Результат 13'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'T', 'en-US') как 'Результат 14'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'u', 'en-US') как 'Результат 15'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'U', 'en-US') КАК 'Результат 16'
ВЫБЕРИТЕ ФОРМАТ (GETDATE (), 'Y', 'en-US') AS 'Результат 17' 

Формат даты с использованием функций даты и времени

Здесь мы собираемся использовать функции ДАТА и ВРЕМЯ, которые доступны для форматирования даты и времени в SQL Server, чтобы вернуть дату в разных форматах.

 - Использование различных функций даты и времени для формата даты SQL Server
ВЫБЕРИТЕ ДАННЫЕ (2017, 06, 14) КАК «Результат 1»;

ВЫБЕРИТЕ ДАННЫЕ ЗНАЧЕНИЯ (2017, 06, 14, 11, 57, 53, 847) КАК «Результат 3»;

ВЫБЕРИТЕ EOMONTH ('20170614') как «Результат 3»; 

Формат даты с использованием функций преобразования

В этом примере мы собираемся использовать функции преобразования сервера Sql для форматирования даты. А функции разговора — это PARSE, TRY_PARSE, CONVERT и TRY_CONVERT. Мы используем эти функции для разных дат, чтобы возвращать дату в разных форматах.

 - Использование различных функций преобразования для формата даты SQL Server
ВЫБЕРИТЕ PARSE ('среда, 14 июня 2017 г.' КАК ДАТА ВРЕМЕНИ ИСПОЛЬЗУЕТСЯ 'en-US') КАК 'Результат 4';

ВЫБЕРИТЕ TRY_PARSE ('среда, 14 июня 2017 г.' AS DATETIME USING 'en-US') AS 'Result 5';

ВЫБРАТЬ ПРЕОБРАЗОВАТЬ (ДАТАВРЕМЯ2, СИСДАТЕТИММ ()) КАК 'Результат 6';

ВЫБЕРИТЕ TRY_CONVERT (DATETIME2, '14.06.2017 11:57:53 AM') как 'Результат 7'; 

Пользователи, которые хотят сохранить форматы даты, предоставляемые функцией ПРЕОБРАЗОВАНИЕ на своих мобильных телефонах, могут использовать следующее изображение:

.