DATEPART (Transact-SQL)
指定された date の特定の datepart を表す整数を返します。
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) で返される値は、それぞれ YEAR、MONTH、DAY の各関数で返される値と同じです。
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 が返されます。
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 */