DATENAME (Transact-SQL)
傳回代表指定 date 之指定 datepart 的字元字串。
如需所有 Transact-SQL 日期和時間資料類型與函數的概觀,請參閱<日期和時間資料類型與函數 (Transact-SQL)>。
適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure 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 可以是運算式、資料行運算式、使用者自訂變數或字串常值。若要避免語意模糊,請使用四位數年份。 如需兩位數年份的詳細資訊,請參閱<設定 two digit year cutoff 伺服器組態選項>。
傳回類型
nvarchar
傳回值
- 每個 datepart 及其縮寫都會傳回相同的值。
傳回值會根據使用 SET LANGUAGE 所設定的語言環境並依據登入的設定 default language 伺服器組態選項而不同。 如果 date 是某些格式的字串常值,傳回值就會相依於 SET DATEFORMAT。 當 date 是日期或時間資料類型的資料行運算式時,SET DATEFORMAT 並不會影響傳回值。
當 date 參數具有 date 資料類型引數時,傳回值就會根據使用 SET DATEFIRST 所指定的設定而不同。
TZoffset datepart 引數
如果 datepart 引數是 TZoffset (tz) 而且 date 引數沒有時區時差,就會傳回 0。
smalldatetime date 引數
當 date 是 smalldatetime 時,秒就會傳回成 00。
針對不在 date 引數中的 datepart 所傳回的預設值
如果 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。 下列程式碼範例失敗,因為 time 資料類型的日期部分年度無效,此資料類型是為變數 @t 而宣告。
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 |
十月 |
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 |