DATENAME (Transact-SQL)

返回表示指定 date 的指定 datepart 的字符串

有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)

适用范围:SQL Server(SQL Server 2008 至当前版本),Windows Azure SQL Database(初始版本至当前版本)。

主题链接图标 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 可以是表达式、列表达式、用户定义的变量或字符串文字。

    为避免不确定性,请使用四位数年份。 有关两位数年份的信息,请参阅 配置两位数年份截止服务器配置选项

返回类型

nvarchar

返回值

  • 每个 datepart 及其缩写都返回相同的值。

返回值因使用 SET LANGUAGE 和登录的配置默认语言服务器配置选项设置的语言环境的不同而异。 如果 date 是某些格式的字符串文字,则返回值由 SET DATEFORMAT 而定。 当日期为日期或时间数据类型的列表达式时,SET DATEFORMAT 不影响返回值。

当 date 参数具有 date 数据类型参数时,返回值取决于使用 SET DATEFIRST 指定的设置。

TZoffset 日期部分参数

如果 datepart 参数为 TZoffset (tz),并且 date 参数没有时区偏移量,则返回 0。

smalldatetime 日期参数

当 date 为 smalldatetime 时,秒的返回值为 00。

对不在日期参数中的日期部分返回默认值

如果 date 参数的数据类型没有指定的 datepart,则仅当为 date 指定了文字值时,才返回该 datepart 的默认值。

例如,任意 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。 下面的代码示例失败,因为日期部分“年”对于为变量 @t 声明的 time 数据类型无效。

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

注释

DATENAME 可用于选择列表 WHERE、HAVING、GROUP BY 和 ORDER BY 子句中。

在 SQL Server 2014 中,DATENAME 将字符串文字作为 datetime2 类型隐式转换。 这就意味着,日期在作为字符串传递时,DATENAME 不会支持 YDM 格式。 您必须先将字符串显示转换为 datetime 或 smalldatetime 类型,然后才能使用 YDM 格式。

示例

下面的示例返回指定日期的日期部分。

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

下面是结果集:

datepart

返回值

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

October

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)