DATENAME (Transact-SQL)
适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics Platform System (PDW)
此函数返回表示指定 date 的指定 datepart 的字符串。
有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。
语法
DATENAME ( datepart , date )
注意
若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
参数
datepart
DATENAME
将返回的 date 参数的特定部分。 此表列出了所有有效的 datepart 参数 。
注意
对于 datepart 参数,DATENAME
不接受用户定义的变量等效项 。
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
可解析为下列某种数据类型的表达式:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
对于 date,DATENAME
接受列表达式、表达式、字符串文本或用户定义的变量 。 使用四位数年份可避免含糊不清问题。 有关两位数年份的信息,请参阅配置两位数年份截止服务器配置选项。
返回类型
nvarchar
返回值
- 每个 datepart 及其缩写都返回相同的值 。
返回值取决于 SET LANGUAGE 和登录时选择的配置默认语言服务器配置选项设定的语言环境。 如果 date 是某些格式的字符串文本,则返回值取决于 SET DATEFORMAT 。 当 date 为日期或时间数据类型的列表达式时,SET DATEFORMAT 不更改返回值。
当 date 参数具有 date 数据类型参数时,返回值取决于 SET DATEFIRST 指定的设置。
TZoffset 日期部分参数
如果 datepart 参数为 TZoffset (tz),并且 date 参数没有时区偏移量,则 DATEADD
返回 0。
smalldatetime 日期参数
当 date 为 smalldatetime 时,DATENAME
返回的秒显示为 00。
对不在日期参数中的日期部分返回默认值
如果 date 参数的数据类型不具有特定的 datepart,则仅当 date 参数具有文本时,DATENAME
才返回该 datepart 的默认值。
例如,任意 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
不支持 YDM 格式。 必须先将字符串显式转换为 datetime 或 smalldatetime 类型,然后才能使用 YDM 格式 。
示例
此示例返回指定日期的日期部分。 用表中的 datepart 值替换 SELECT 语句中的 datepart
参数:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
下面是结果集。
datepart | 返回值 |
---|---|
year, yyyy, yy | 2007 |
quarter, qq, q | 4 |
month, mm, m | 10 月 |
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 Platform System (PDW)
此示例返回指定日期的日期部分。 用表中的 datepart 值替换 SELECT 语句中的 datepart
参数:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
下面是结果集。
datepart | 返回值 |
---|---|
year, yyyy, yy | 2007 |
quarter, qq, q | 4 |
month, mm, m | 10 月 |
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 |