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


НАЗВАНИЕ ДАТЫ (Transact-SQL)

Относится к:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsСистема аналитической платформы (PDW)SQL база данных в Microsoft Fabric

Эта функция возвращает строку символов, представляющую указанную часть datepart заданного типа date.

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

DATENAME ( datepart , date )  

Аргументы

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

Примечание.

DATENAME не принимает эквивалентные переменные, определяемые пользователем, для аргументов datepart.

datepart Abbreviations
year yy, yyy
quarter qq, q
month мм, м
dayofyear dy, y
day dd, d
week wk, ww
weekday ДВ, В
hour hh
minute Ми, Н
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 в следующих предложениях.

  • ГРУППИРОВКА ПО
  • HAVING
  • ORDER BY (СОРТИРОВАТЬ ПО)
  • Список SELECT <>
  • WHERE

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

Примеры

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

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

Вот результирующий набор.

datepart Возвращаемое значение
год, гг, гг 2007
четверть, квк, кв 4
месяц, мм, м октября
День года, Dy, Y 303
Дэй, ДД, Д 30
неделя, неделя, неделя 44
Будний день, DW Вторник
Час, hh 12
минута, n 15
Во-вторых, SS, S 32
миллисекунда, МС 123
MicroSecond, MCS 123456
наносекунда, 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 Возвращаемое значение
год, гг, гг 2007
четверть, квк, кв 4
месяц, мм, м октября
День года, Dy, Y 303
Дэй, ДД, Д 30
неделя, неделя, неделя 44
Будний день, DW Вторник
Час, hh 12
минута, n 15
Во-вторых, SS, S 32
миллисекунда, МС 123
MicroSecond, MCS 123456
наносекунда, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

См. также

CAST и CONVERT (Transact-SQL)