SQL Server 的 DATENAME 函数用于从现有日期中提取或显示指定的日期部分。此 DATENAME 函数始终返回字符串数据。例如,如果要从现有日期中提取月份名称或星期名称(星期日...星期六),请使用此 Datename 函数。
SQL DATENAME 语法
datename 函数的基本语法如下所示。
DATENAME (Datepart, Date)
Datepart:这是给定日期中我们将作为输出显示的部分。下表将显示 SQL Server 中可用 datepart 参数的列表。
| 日期部分 | 缩写 | 描述 |
|---|---|---|
| 年 | yy, yyyy | 这将显示毫秒值。 |
| 季度 | qq, q | 显示给定日期的季度值。 |
| 月 | mm, m | 显示给定日期的月份名称。 |
| 年中的第几天 | dy, y | 一年中的日期编号,从 1 到 365。 |
| 日 | dd, d | 一年中的日期编号,从 1 到 365。 |
| 周 | wk, ww | 显示给定日期的星期名称(星期日到星期六)。 |
| 星期几 | dw, w | 指定日期中的分钟值。 |
| 小时 | hh | 它返回小时值。 |
| 分钟 | mi, n | 指定日期中的分钟值。 |
| 秒 | ss, s | 这将显示毫秒值。 |
| 毫秒 | ms | 这将显示毫秒值。 |
| 微秒 | mcs | 此 Datename 将显示可用的微秒值。 |
| 纳秒 | ns | sql datename 函数中的此参数将显示纳秒值。 |
| TZOffset | tz | 这将显示时区偏移值。 |
| ISO_WEEK | isowk, isoww | 这将显示 ISO 星期编号。 |
Date:请将有效日期作为此 datename 函数的第二个参数指定。它可以是列、表达式或任何变量。
SQL Server DATENAME 示例
在此 日期函数 示例中,我们将声明一个 datetime2 数据类型的变量。让我们为该变量分配一个有效日期,并执行所有可用的 DATENAME 操作。
首先,我们声明了一个变量并为该变量分配了日期和时间。第一个 Datename 语句将显示年份,而下面的语句将打印月份。
DECLARE @Date datetime2 = '2015-08-25 14:24:04.1234567' SELECT 'YEAR' AS [SQLDATENAME], DATENAME(year, @Date) AS [Values] UNION ALL SELECT 'QUARTER', DATENAME(quarter, @Date) UNION ALL SELECT 'MONTH', DATENAME(month, @Date) UNION ALL SELECT 'DAYOFYEAR', DATENAME(dayofyear, @Date) UNION ALL SELECT 'DAY', DATENAME(day, @Date) UNION ALL SELECT 'WEEK', DATENAME(week, @Date) UNION ALL SELECT 'WEEKDAY', DATENAME(weekday, @Date) UNION ALL SELECT 'HOUR', DATENAME (hour, @Date) UNION ALL SELECT 'MINUTE', DATENAME(minute, @Date) UNION ALL SELECT 'SECOND', DATENAME(second, @Date) UNION ALL SELECT 'MILLISECOND', DATENAME(millisecond, @Date) UNION ALL SELECT 'MICROSECOND', DATENAME(microsecond, @Date) UNION ALL SELECT 'NANOSECOND',DATENAME(nanosecond, @Date) UNION ALL SELECT 'ISO WEEK',DATENAME(ISO_WEEK, @Date)

DATENAME 函数示例 2
在此 SQL Server 示例中,我们使用一个自定义表对 HireDate 列执行 Datename 操作。
Datename 函数将在第五行打印 HireDate 列的年份值。第六行将显示 HireDate 列的季度值。
SELECT [FirstName] + ' '+ [LastName] AS [Full Name]
,[Occupation]
,[YearlyIncome]
,[HireDate]
,DATENAME(year, [HireDate]) AS [YEAR]
,DATENAME(quarter, [HireDate]) AS [QUARTER]
,DATENAME(month, [HireDate]) AS [MONTH]
,DATENAME(day, [HireDate]) AS [DAY]
,DATENAME(dayofyear, [HireDate]) AS [TOTAL DAYS]
FROM [Employee]
