DATENAME (Transact-SQL)
Применимо: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
azure Synapse Analytics Analytics
Platform System (PDW)
Эта функция возвращает строку символов, представляющую указанную часть datepart заданного типа date.
Обзор всех типов данных и функций даты и времени в языке Transact-SQL см. в статье Типы данных и функции даты и времени (Transact-SQL).
Соглашения о синтаксисе Transact-SQL
Синтаксис
DATENAME ( datepart , date )
Примечание.
Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.
Аргументы
datepart
Определенная часть аргумента date, которую вернет функция DATENAME
. В приведенной ниже таблице перечислены все допустимые аргументы datepart.
Примечание.
DATENAME
не принимает эквивалентные переменные, определяемые пользователем, для аргументов datepart.
datepart | Abbreviations |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw, w |
hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
microsecond | mcs |
nanosecond | ns |
TZoffset | tz |
ISO_WEEK | ISOWK, ISOWW |
date
Выражение, которое может быть разрешено в один из следующих типов данных:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
Для dateDATENAME
будет принимать столбец выражения, выражение, строковый литерал или определяемую пользователем переменную. Во избежание неоднозначности используйте четырехзначную запись года. Сведения о двузначном обозначении года см. в статье Настройка параметра конфигурации сервера two digit year cutoff.
Тип возвращаемых данных
nvarchar
Возвращаемое значение
- Каждое выражение datepart и его краткие формы возвращают одно и то же значение.
Возвращаемое значение зависит от языка среды, задаваемого инструкцией SET LANGUAGE, и от параметра конфигурации сервера "язык по умолчанию" для имени входа. Если значение date является строковым литералом некоторого формата, то возвращаемое значение зависит от функции SET DATEFORMAT. Инструкция SET DATEFORMAT не изменяет возвращаемое значение, если дата представляется выражением столбца типа данных даты или времени.
Если параметр date имеет аргумент типа date, то возвращаемое значение зависит от настроек, заданных с помощью функции SET DATEFIRST.
Аргумент TZoffset функции datepart
Если в качестве аргумента datepart выступает переменная TZoffset (tz), а аргумент date не содержит смещения часового пояса, функция DATEADD
возвращает значение 0.
Аргумент даты типа smalldatetime
Если аргумент date имеет тип smalldatetime, функция DATENAME
возвращает значение секунд 00.
Возвращается значение по умолчанию для аргумента функции datepart, который отличен от даты
Если тип данных аргумента date не содержит указанной части datepart, функция DATENAME
вернет значение по умолчанию для этой части datepart, только если аргумент date содержит литерал.
Например, значение "год-месяц-день" по умолчанию для любого типа данных date равно 1900-01-01. Приведенная ниже инструкция содержит аргументы компонентов даты для datepart, аргумент времени для date, а функция DATENAME
возвращает 1900, January, 1, 1, Monday
.
SELECT DATENAME(year, '12:10:30.123')
,DATENAME(month, '12:10:30.123')
,DATENAME(day, '12:10:30.123')
,DATENAME(dayofyear, '12:10:30.123')
,DATENAME(weekday, '12:10:30.123');
Если аргумент date указан как переменная или столбец таблицы и тип данных этой переменной или столбца не содержит указанной части datepart, функция DATENAME
возвращает ошибку 9810. В этом примере переменная @t имеет тип данных time. Этот пример завершается ошибкой, потому что год даты не является допустимым для типа данных time:
DECLARE @t time = '12:10:30.123';
SELECT DATENAME(year, @t);
Замечания
Используйте DATENAME
в следующих предложениях.
- GROUP BY
- HAVING
- ORDER BY
- SELECT <list>
- WHERE
В SQL Server DATENAME неявно приводит строковые литералы в качестве типа datetime2 . Иными словами, DATENAME
не поддерживает формат ГЧМ (год, число, месяц) при передаче даты в виде строки. Для использования формата ГЧМ (год, число, месяц) необходимо явно привести строку к типу datetime или smalldatetime.
Примеры
В приведенном ниже примере возвращаются компоненты указанной даты. Подставьте значение datepart из таблицы для аргумента datepart
в инструкции SELECT:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
Результирующий набор:
datepart | Возвращаемое значение |
---|---|
year, yyyy, yy | 2007 |
quarter, qq, q | 4 |
month, mm, m | октября |
dayofyear, dy, y | 303 |
day, dd, d | 30 |
week, wk, ww | 44 |
weekday, dw | Вторник |
hour, hh | 12 |
minute, n | 15 |
second, ss, s | 32 |
millisecond, ms | 123 |
microsecond, mcs | 123456 |
nanosecond, ns | 123456700 |
TZoffset, tz | +05:10 |
ISO_WEEK, ISOWK, ISOWW | 44 |
Система платформы Azure Synapse Analytics и Analytics (PDW)
В приведенном ниже примере возвращаются компоненты указанной даты. Подставьте значение datepart из таблицы для аргумента datepart
в инструкции SELECT:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
Результирующий набор:
datepart | Возвращаемое значение |
---|---|
year, yyyy, yy | 2007 |
quarter, qq, q | 4 |
month, mm, m | октября |
dayofyear, dy, y | 303 |
day, dd, d | 30 |
week, wk, ww | 44 |
weekday, dw | Вторник |
hour, hh | 12 |
minute, n | 15 |
second, ss, s | 32 |
millisecond, ms | 123 |
microsecond, mcs | 123456 |
nanosecond, ns | 123456700 |
TZoffset, tz | +05:10 |
ISO_WEEK, ISOWK, ISOWW | 44 |