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 には、式、列式、ユーザー定義変数、または文字列リテラルを指定できます。

    こうしたあいまいさを排除するため、4 桁の西暦を使用してください。 2 桁の年の詳細については、「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 が返されます。 次のコード例は、変数 @t に対して宣言されている time データ型では日付部分の年が無効なため、失敗します。

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 形式をサポートしません。 YDM 形式を使用するには、文字列を datetime 型または smalldatetime 型に明示的にキャストする必要があります。

使用例

次の例は、指定された日付の日付部分を返します。

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

310

ISO_WEEK, ISOWK, ISOWW

44

関連項目

参照

CAST および CONVERT (Transact-SQL)