适用于:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric中的SQL数据库
此函数返回表示指定 date 的指定 datepart 的字符串。
有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。
语法
DATENAME ( datepart , date )
参数
datepart
将返回的 date 参数的特定部分DATENAME。 此表列出了所有有效的 datepart 参数 。
注意
对于 datepart 参数,DATENAME 不接受用户定义的变量等效项 。
| datepart | 缩写形式 |
|---|---|
| year | yy、yyy |
| 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 | 伊索克,伊索沃 |
date
可解析为下列某种数据类型的表达式:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
对于 date, 接受列表达式、表达式、字符串文本或用户定义的变量 。 使用四位数年份可避免含糊不清问题。 有关两位数年份的信息,请参阅配置两位数年份截止服务器配置选项。
返回类型
nvarchar
返回值
- 每个 datepart 及其缩写都返回相同的值 。
返回值取决于 SET LANGUAGE 和登录时选择的配置默认语言服务器配置选项设定的语言环境。 如果 date 是某些格式的字符串文本,则返回值取决于 SET DATEFORMAT 。 当 date 为日期或时间数据类型的列表达式时,SET DATEFORMAT 不更改返回值。
当 date 参数具有 date 数据类型参数时,返回值取决于 SET DATEFIRST 指定的设置。
TZoffset 日期部分参数
如果 datepart 参数为 TZoffset (tz),并且 date 参数没有时区偏移量,则 返回 0DATEADD。
smalldatetime 日期参数
当 date 为 smalldatetime 时, 返回的秒显示为 00DATENAME。
对不在日期参数中的日期部分返回默认值
如果 date 参数的数据类型不具有特定的 datepart,则仅当 date 参数具有文本时, 才返回该 datepart 的默认值DATENAME。
例如,任意 date 数据类型的默认年-月-日都为 1900-01-01 。 此语句具有 datepart 的日期部分参数、date 的时间参数,并且 返回 DATENAME1900, 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 数据类型。 示例失败,因为日期部分年份对于 time 数据类型无效 :
DECLARE @t time = '12:10:30.123';
SELECT DATENAME(year, @t);
备注
在以下子句中使用 DATENAME:
- 按组汇总
- HAVING
- 排序依据
- SELECT <列表>
- 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 | 返回值 |
|---|---|
| 年份,耶耶,耶 | 2007 |
| 四分之一,QQ,Q | 4 |
| month, mm, m | 10 月 |
| 年份日,DY,Y | 303 |
| 日、日、日 | 30 |
| 周、周、周、周 | 44 |
| 工作日,DW | 星期二 |
| hour, hh | 12 |
| minute, n | 15 |
| 第二,SS,S | 32 |
| 毫秒,密西比州 | 123 |
| 微秒,MCS | 123456 |
| 纳秒,N | 123456700 |
| TZoffset, tz | +05:10 |
| ISO_WEEK,伊索克,伊索沃 | 44 |
Azure Synapse Analytics 和 Analytics Platform System (PDW)
此示例返回指定日期的日期部分。 用表中的 datepart 值替换 SELECT 语句中的 参数datepart:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
结果集如下。
| datepart | 返回值 |
|---|---|
| 年份,耶耶,耶 | 2007 |
| 四分之一,QQ,Q | 4 |
| month, mm, m | 10 月 |
| 年份日,DY,Y | 303 |
| 日、日、日 | 30 |
| 周、周、周、周 | 44 |
| 工作日,DW | 星期二 |
| hour, hh | 12 |
| minute, n | 15 |
| 第二,SS,S | 32 |
| 毫秒,密西比州 | 123 |
| 微秒,MCS | 123456 |
| 纳秒,N | 123456700 |
| TZoffset, tz | +05:10 |
| ISO_WEEK,伊索克,伊索沃 | 44 |