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 )
引數
datepart
DATENAME
會傳回之 date 引數的特定部分。 此表格會列出所有有效的 datepart 引數。
注意
DATENAME
不會接受 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
可解析成下列其中一個資料類型的運算式:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
針對 date,DATENAME
會接受資料行運算式、運算式、字串常值或使用者定義變數。 請使用四位數年份以避免模糊不清的問題。 如需兩位數年份的資訊,請參閱設定兩位數年份的截止伺服器設定選項。
傳回類型
nvarchar
傳回值
- 每個 datepart 及其縮寫都會傳回相同的值。
傳回值會取決於使用 SET LANGUAGE 及登入的設定 default language 伺服器設定選項而設定的語言環境,而有所不同。 如果 date 是某些格式的字串常值,傳回值就會取決於 SET DATEFORMAT。 當 date 是日期或時間資料類型的資料行運算式時,SET DATEFORMAT 並不會變更傳回值。
當 date 參數具有 date 資料類型引數時,傳回值就會根據 SET DATEFIRST 所指定的設定而不同。
TZoffset datepart 引數
如果 datepart 引數是 TZoffset (tz) 而且 date 引數沒有時區位移時,DATEADD
就會傳回 0。
smalldatetime date 引數
當 date 是 smalldatetime 時,DATENAME
會以 00 形式傳回秒數。
針對不在 date 引數中的 datepart 所傳回的預設值
如果 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 資料類型。 此範例會失敗,因為 DATEPART year 對 time 資料類型無效:
DECLARE @t time = '12:10:30.123';
SELECT DATENAME(year, @t);
備註
在下列子句中使用 DATENAME
:
- GROUP BY
- HAVING
- 排序依據
- 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 | Tuesday |
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 | Tuesday |
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 |