DATEPART (Transact-SQL)

指定された date の特定の datepart を表す整数を返します。

Transact-SQL の日付と時刻のデータ型および関数すべての概要については、「日付と時刻の関数 (Transact-SQL)」を参照してください。日付と時刻のデータ型および関数の一般的な例については、「日時データの使用」を参照してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

DATEPART ( datepart , date )

引数

  • datepart
    integer の取得対象となる、date の要素 (日付または時刻値) を指定します。次の表は、datepart 引数に有効なすべての値の一覧です。ユーザー定義変数に相当するものは無効です。

    datepart

    省略形

    year

    yy,yyyy

    quarter

    qq,q

    month

    mm, m

    dayofyear

    dy,y

    day

    dd,d

    week

    wk,ww

    weekday

    dw

    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 オプション」を参照してください。

戻り値の型

int

戻り値

いずれの datepart も、対応する省略形を指定すると、同じ値が返されます。

戻り値は、SET LANGUAGE およびログインの既定の言語で設定した言語環境に依存します。date になんらかの形式の文字列リテラルを指定した場合、戻り値は、SET DATEFORMAT を使って指定された形式に依存します。date が日付型や時刻型の列式である場合、SET DATEFORMAT は戻り値に影響しません。

次の表は、SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10') ステートメントについて、すべての datepart 引数と、対応する戻り値を一覧にしたものです。date 引数のデータ型は datetimeoffset(7) です。datepart に nanosecond を指定した場合の戻り値の精度は 9 桁 (.123456700) で、最後の 2 桁は常に 00 になります。

datepart

戻り値

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

10

dayofyear, dy, y

303

day, dd, d

30

week, wk, ww

45

weekday, dw

1

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

week および weekday (datepart 引数)

datepart に week (wk、ww) または weekday (dw) を指定した場合、戻り値は、SET DATEFIRST を使って設定された値に依存します。

datepart に week を指定した場合、返される数値は 1 月 1 日を起点としてカウントされます。たとえば、DATEPART (wk, 'Jan 1, xxxx') = 1 となります。ここで、xxxx には任意の年を指定できます。

次の表は、datepart に week および weekday を指定した場合の戻り値の一覧です。SET DATEFIRST 引数には、それぞれ '2007-04-21' が指定されています。西暦 2007 年 1 月 1 日は日曜日です。西暦 2007 年 4 月 21 日は土曜日です。英語 (U.S.) の場合、SET DATEFIRST 7 (日曜日) が既定値になります。

SET DATEFIRST

引数

week

戻り値

weekday

戻り値

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

year、month、day (datepart 引数)

DATEPART (year、date)、DATEPART (month、date)、および DATEPART (day、date) で返される値は、それぞれ YEARMONTHDAY の各関数で返される値と同じです。

ISO_WEEK (datepart)

ISO 8601 には、ISO 週日付方式 (週番号方式) が規定されています。それぞれの週は、木曜日が出現する年と関連付けられます。たとえば、2004 年の第 1 週 (2004W01) は、2003 年 12 月 29 日 月曜日から 2004 年 1 月 4 日 日曜日です。年の最大の週番号は 52 または 53 になります。この付番方法は、主に欧州諸国/地域で用いられ、それ以外の国で使用されることはまれです。

各国/地域で採用されている付番方式は、ISO 標準に準拠していない場合があります。次の表に示すように、少なくとも 6 とおりの可能性が考えられます。

週の最初の曜日

年の最初の週の構成

2 回割り当てられる週の有無

利用されている地域

日曜日

1 月 1 日

最初の土曜日

年の 1 ~ 7 日

あり

米国

月曜日

1 月 1 日

最初の日曜日

年の 1 ~ 7 日

あり

欧州および英国

月曜日

1 月 4 日

最初の木曜日

年の 4 ~ 7 日

なし

ISO 8601、ノルウェー、およびスウェーデン

月曜日

1 月 7 日

最初の月曜日

年の 7 日間

なし

水曜日

1 月 1 日

最初の火曜日

年の 1 ~ 7 日

あり

土曜日

1 月 1 日

最初の金曜日

年の 1 ~ 7 日

あり

TZoffset

TZoffset (tz) は、符号付きの分数として返されます。次のステートメントは、310 分のタイム ゾーン オフセットを返します。

SELECT DATEPART (TZoffset, 2007-05-10  00:00:01.1234567 +05:10);

datepart 引数に TZoffset (tz) を指定し、date 引数に datetimeoffset 以外のデータ型を指定した場合、NULL が返されます。

smalldatetime (date 引数)

date に smalldatetime を指定した場合、秒要素は 00 として返されます。

date 引数に存在しない datepart を指定した場合に返される既定値

date 引数のデータ型に、指定された datepart が存在しない場合、その datepart の既定値が返されます。

たとえば、date データ型の既定の年月日は 1900-01-01 です。次のステートメントでは、datepart 引数と date 引数に、それぞれ日付部分と時刻を表す値が指定されています。この場合、戻り値は 1900, 1, 1, 1, 2 になります。

SELECT DATEPART(year, '12:10:30.123')
    ,DATEPART(month, '12:10:30.123')
    ,DATEPART(day, '12:10:30.123')
    ,DATEPART(dayofyear, '12:10:30.123')
    ,DATEPART(weekday, '12:10:30.123');

time データ型の既定の時分秒は 00:00:00 です。次のステートメントでは、datepart 引数と date 引数に、それぞれ時刻部分と日付を表す値が指定されています。この場合、戻り値は 0, 0, 0 になります。

SELECT DATEPART(hour, '2007-06-01')
    ,DATEPART(minute, '2007-06-01')
    ,DATEPART(second, '2007-06-01');

秒の小数部

次のステートメントでは、秒の小数部が返されます。

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700

説明

DATEPART は、選択リストのほか、WHERE 句、HAVING 句、GROUP BY 句、および ORDER BY 句で使用できます。SQL Server 2008 では、DATEPART は、文字列リテラルを暗黙的に datetime2 型にキャストします。つまり、DATEPART では、日付が文字列として渡される場合に YDM 形式がサポートされなくなりました。YDM 形式を使用するには、文字列を datetime 型または smalldatetime 型に明示的にキャストする必要があります。

次の例では、基準年を返します。基準年は日付計算などに利用できます。この例では、日付が数値で指定されています。SQL Server は、0 を 1900 年 1 月 1 日と解釈することに注意してください。 

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900    1    1 */