次の方法で共有


DATEPART (Transact-SQL)

適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

この関数は、指定された date の指定された datepart を表す整数を返します。

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

Transact-SQL 構文表記規則

構文

DATEPART ( datepart , date )  

引数

datepart
DATEPART によって整数が返される date 引数の特定の部分。 この表には、有効な datepart 引数をすべて一覧表示しています。

注意

DATEPART は、datepart 引数に関して、ユーザー定義変数に相当するものは受け入れられません。

datepart 省略形
year yyyyyy
quarter qqq
month mmm
dayofyear dyy
day ddd
week wkww
weekday dw
hour hh
minute mi、n
second sss
millisecond ms
microsecond mcs
nanosecond ns
tzoffset tz
iso_week isowkisoww

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 (wkww) または weekday (dw) datepart の場合、DATEPART の戻り値は、SET DATEFIRST で設定された値によって変わります。

任意の年の 1 月 1 日が、week datepart の開始番号と定義されます。 次に例を示します。

DATEPART (wk, 'Jan 1, xxxx') = 1

この xxxx は任意の年です。

この表は、weekweekdaydatepart の戻り値を示しています。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) で返される値は、それぞれ YEARMONTHDAY の各関数で返される値と同じです。

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

関連項目

CAST および CONVERT (Transact-SQL)DATETRUNC