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


DATENAME (Transact-SQL)

Возвращает символьную строку, представляющую указанный компонент datepart указанной date.

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

DATENAME ( datepart , date )

Аргументы

  • datepart
    Отображаемая часть переменной date. В следующей таблице перечислены все допустимые аргументы datepart. Эквивалентные переменные, определяемые пользователем, являются недопустимыми.

    datepart

    Сокращения

    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
    Выражение, которое можно привести к значению типа time, date, smalldatetime, datetime, datetime2 или datetimeoffset. Аргумент date может быть выражением, выражением столбца, определяемой пользователем переменной или строковым литералом.

    Во избежание неоднозначности используйте четырехзначную запись года. Дополнительные сведения о двузначном обозначении года см. в разделе Настройка параметра конфигурации сервера two digit year cutoff.

Возвращаемый тип

nvarchar

Возвращаемое значение

  • Каждое выражение datepart и его краткие формы возвращают одно и то же значение.

Возвращаемое значение зависит от языка среды, задаваемого инструкцией SET LANGUAGE, и от параметра Настройка параметра конфигурации сервера «язык по умолчанию» для имени входа. Если значение date является строковым литералом некоторого формата, то возвращаемое значение зависит от функции SET DATEFORMAT. Инструкция SET DATEFORMAT не влияет на возвращаемое значение, если дата представляется выражением столбца типа данных даты или времени.

Если параметр date имеет аргумент типа date, то возвращаемое значение зависит от настроек, заданных с помощью функции SET DATEFIRST.

Аргумент TZoffset функции datepart

Если в качестве аргумента datepart выступает переменная TZoffset (tz), а параметр date не содержит смещения часового пояса, возвращается значение NULL.

Аргумент даты типа smalldatetime

Если аргумент date имеет тип smalldatetime, для секунд возвращается значение 00.

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

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

Например, значение «год-месяц-день» по умолчанию для любого типа данных date равно 1900-01-01. Следующая инструкция содержит аргументы компонентов даты для datepart, аргумент времени для date и возвращает 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, возвращается ошибка 9810. Следующий пример кода заканчивается ошибкой, потому что год даты не является действительным для типа данных time, объявленного для переменной @t.

DECLARE @t time = '12:10:30.123'; 
SELECT DATENAME(year, @t); 

Замечания

Функция DATENAME может использоваться в предложениях WHERE, HAVING, GROUP BY и ORDER BY, а также при составлении списка выбора.

В SQL Server 2014 функция DATENAME неявным образом приводит строковые литералы к типу datetime2. Это означает, что DATENAME не поддерживает формат ГЧМ (год, число, месяц) при передаче даты в виде строки. Для использования формата ГЧМ (год, число, месяц) необходимо явно привести строку к типу datetime или smalldatetime.

Примеры

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

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

310

ISO_WEEK, ISOWK, ISOWW

44

См. также

Справочник

Функции CAST и CONVERT (Transact-SQL)