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


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 )  

Аргументы

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

См. также

CAST и CONVERT (Transact-SQL)