DATEPART (Transact-SQL)
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
この関数は、指定された date の指定された datepart を表す整数を返します。
Transact-SQL の日付と時刻のデータ型および関数の概要については、「日付と時刻のデータ型および関数 (Transact-SQL)」を参照してください。
構文
DATEPART ( datepart , date )
引数
datepart
DATEPART
によって整数が返される date 引数の特定の部分。 この表には、有効な datepart 引数をすべて一覧表示しています。
注意
DATEPART
は、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
次のいずれかのデータ型に解決される式。
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
date の場合、DATEPART
では、列式、式、文字列リテラル、ユーザー定義の変数が受け入れられます。 あいまいさの問題を排除するために、4 桁の西暦を使用してください。 2 桁の西暦については、「two digit year cutoff サーバー構成オプションの構成」を参照してください。
戻り値の型
INT
戻り値
-各日付構成要素とその省略形は、同じ値を返します。
戻り値は、SET LANGUAGE と、ログインの default language サーバー構成オプションの構成で設定した言語環境に依存します。 date がなんらかの形式の文字列リテラルである場合、戻り値は SET DATEFORMAT に依存します。 date が日付データ型や時刻データ型の列式である場合、SET DATEFORMAT によって戻り値が変わることはありません。
この表は、SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10')
ステートメントについて、すべての datepart 引数と、対応する戻り値を一覧にしたものです。 date 引数のデータ型は datetimeoffset(7) です。 nanosecond datepart の戻り値の末尾 2 桁は常に 00
であり、この値の小数点以下桁数は 9 桁です。
.123456700
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 | 3 |
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 |
week および weekday (datepart 引数)
week (wk、ww) または weekday (dw) datepart の場合、DATEPART
の戻り値は、SET DATEFIRST で設定された値によって変わります。
任意の年の 1 月 1 日が、week datepart の開始番号と定義されます。 次に例を示します。
DATEPART (wk, 'Jan 1, xxxx') = 1
この xxxx は任意の年です。
この表は、week と weekday の datepart の戻り値を示しています。SET DATEFIRST 引数には、それぞれ '2007-04-21' が指定されています。 2007 年 1 月 1 日は月曜日です。 2007 年 4 月 21 日は土曜日です。 米国英語の場合、
SET DATEFIRST 7 -- ( Sunday )
が既定として使用されます。 DATEFIRST を設定した後、datepart テーブル値に次の推奨される SQL ステートメントを使用します。
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')
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 日 日曜日です。 ヨーロッパの国や地域では、通常、このスタイルの付番方式が使用されます。 通常、ヨーロッパ以外の国や地域ではこの方式を使用しません。
注: 1 年の最大週番号は 52 または 53 のいずれかになります。
異なる国や地域では、付番方式が ISO 標準に準拠していない可能性があります。 この表は 6 つの可能性を示しています。
週の最初の曜日 | 年の最初の週の構成 | 2 回割り当てられる週の有無 | 利用されている地域 |
---|---|---|---|
土曜日 | 1 月 1 日 最初の土曜日 年の 1 から 7 日間 |
はい | United States |
月曜日 | 1 月 1 日 最初の日曜日 年の 1 から 7 日間 |
はい | 欧州およびイギリス |
月曜日 | 1 月 4 日 最初の木曜日 年の 4 から 7 日間 |
いいえ | ISO 8601、ノルウェー、およびスウェーデン |
月曜日 | 1 月 7 日 最初の月曜日 年の 7 日間 |
いいえ | |
水曜日 | 1 月 1 日 最初の火曜日 年の 1 から 7 日間 |
はい | |
土曜日 | 1 月 1 日 最初の金曜日 年の 1 から 7 日間 |
はい |
tzoffset
DATEPART
は、符号付きの分数として tzoffset (tz) 値を返します。 次のステートメントは、310 分のタイム ゾーン オフセットを返します。
SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10');
DATEPART
では、tzoffset 値が次のようにレンダリングされます。
- datetimeoffset と datetime2 の場合は、tzoffset は分単位で時刻オフセットを返します。datetime2 のオフセットは常に 0 分です。
- 暗黙的に datetimeoffset または datetime2 に変換できるデータ型の場合、
DATEPART
は時刻オフセットを分単位で返します。 例外: 他の日付/時刻データ型。 - 他のすべての型のパラメーターは、エラーが発生します。
smalldatetime (date 引数)
smalldatetime date 値の場合、DATEPART
は秒を 00 として返します。
date 引数に存在しない datepart を指定した場合に返される既定値
date 引数のデータ型に指定した datepart がない場合、リテラルが date に指定されている場合にのみ、DATEPART
はその datepart の既定値を返します。
など、既定の年-月-日の任意の日付データ型は 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');
date が変数またはテーブル列として指定され、その変数または列のデータ型に datepart が指定されていない場合、DATEPART
はエラー 9810 を返します。 この例では、変数 "@t" は time データ型です。 time データ型の日付部分の年度が無効なため、この例は失敗します。
DECLARE @t time = '12:10:30.123';
SELECT DATEPART(year, @t);
秒の小数部
これらのステートメントは、DATEPART
が秒の小数部を返すことを示しています。
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 (10.0.x) 以降では、DATEPART は文字列リテラルを datetime2 型として暗黙的にキャストします。 つまり、DATENAME では、日付が文字列として渡される場合、YDM 形式がサポートされません。 文字列を明示的にキャストする必要があります、 datetime または smalldatetime YDM 形式を使用する型。
例
この例では、基準年を返します。 この基準年は、日付の計算に役立ちます。 この例では、数値で日付を指定します。 SQL Server は、0 を 1900 年 1 月 1 日と解釈することに注意してください。
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1
この例は、日付 12/20/1974
の日の部分を返します。
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 20
この例は、日付 12/20/1974
の年の部分を返します。
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 1974