共用方式為


DATENAME (Transact-SQL)

傳回代表指定 date 之指定 datepart 的字元字串。

如需所有 Transact-SQL 日期和時間資料類型與函數的概觀,請參閱<日期和時間資料類型與函數 (Transact-SQL)>。

主題連結圖示 Transact-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 2012 中,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

請參閱

參考

CAST 和 CONVERT (Transact-SQL)