日付/時刻式の指定された部分の値を表す整数を返す、汎用日付/時刻関数です。
Synopsis
DATEPART(datepart,date-expression)
DATEPART 関数は、指定された日付/時刻式の、指定された日付/時刻部分を表す INTEGER を返します。この情報を文字列として返すには、
DATENAME を使用します。sqltimestamp オプションは、データ型 TIMESTAMP の文字列として値を返します。
datepart パラメータは、以下の日付/時刻コンポーネントの 1 つで、正式な名前 (日付部分列) または省略形 (省略形列) のいずれかになります。これらの
datepart コンポーネント名と省略形では、大文字と小文字は区別されません。
リテラルとして無効な
datepart 値を指定した場合は、SQLCODE -8 エラー・コードが発行されます。一方、ホスト変数として無効な
datepart 値を指定した場合は、SQLCODE エラーは発行されず、
DATEPART 関数は NULL 値を返します。
このテーブルに示されている返り値は、それぞれの日付部分の既定値です。これらの日付部分のいくつかの返り値は、各種日付/時刻オプションで
SET OPTION コマンドを使用することで変更できます。
DATEPART では、Sybase および Microsoft SQL Server との互換性が提供されています。
以下のメソッド・コールを使用することで、Caché ObjectScript からこの関数を呼び出すこともできます。
-
-
Caché %TimeStamp 論理値 (YYYY-MM-DD HH:MM:SS)
-
Caché %String (互換性のある) 値は、以下のいずれかの形式にできます。
mmdelimiterdddelimiter[yy]yy
dd Mmm[mm][,][yy]yy
dd [yy]yy Mmm[mm]
yyyy Mmm[mm] dd
yyyy [dd] Mmm[mm]
delimiter は、スラッシュ (/)、ハイフン (-)、またはピリオド (.) です。
HH:MM[:SS:SSS][{AM|PM}]
HH:MM[:SS.S]
HH['']{AM|PM}
年が 2 桁で表示される場合、%DATE ユーティリティの移動日付ウィンドウが使用され (使用できる場合)、何世紀か判断されます。
DATEPART は、入力値に対して以下のチェックを実行します。値がチェックに失敗した場合は、NULL 文字列が返されます。
-
有効な
date-expression は、日付文字列 (yyyy-mm-dd)、時刻文字列 (hh:mm:ss)、または日付/時刻文字列 (yyyy-mm-dd hh:mm:ss) で構成されます。日付と時刻の両方が指定されている場合は、両方が有効でなければなりません。例えば、時刻文字列が指定されていない場合は年数値を返すことができますが、無効な時刻文字列が指定されている場合は年数値を返すことができません。
-
日付文字列は完全であると同時に、要素数、各要素の桁数、および区切り文字に適切な形式が使用されている必要があります。例えば、日の値が省略されている場合、年数値を返すことはできません。年は 4 桁で指定される必要があります。
-
時刻文字列は、適切な区切り文字で適切にフォーマットされている必要があります。時刻要素の値はゼロの場合もあるため、1 つ以上の時刻要素を省略でき (区切り文字はそのまま残す場合と省略する場合がある)、これらの要素はゼロ値として返されます。したがって、'hh:mm:ss'、'hh:mm:'、'hh:mm'、'hh::ss'、'hh::'、'hh'、および ':::' は、すべて有効です。時間 (Hour) 要素を省略するには、
date-expression に文字列の日付部分がないことと、少なくとも 1 つの区切り文字 (:) があることが必要です。
-
日付/時刻値は、有効な範囲内にある必要があります。年は 1841 から 9999、月は 1 から 12、日は 1 から 31、時間は 0 から 23、分は 0 から 59、秒は 0 から 59 がそれぞれ有効範囲です。
-
月の日数は、該当月と該当年に合ったものでなければなりません。例えば、日付 '0229' が有効なのは、指定された年がうるう年の場合のみです。
-
日付値または時刻値が 10 よりも小さい場合、そのほとんどの先頭のゼロは、記載、省略のどちらでもかまいません。ただし、10 よりも小さい時間 (Hour) 値が日付/時刻文字列の一部の場合は、その先頭にゼロを付ける必要があります。その他の非標準的な整数値は許可されません。例えば、'07' または '7' は有効な日値ですが、'007'、'7.0'、または '7a' は無効です。
以下の 5 つの例は、すべて日付時刻文字列の年の部分を整数 (この場合は 2004) として返します。
date-expression はさまざまな形式で指定でき、
datepart は正式な名前または省略形で指定できることに注意してください。
SELECT DISTINCT DATEPART('yy','2004-12-20 12:00:00') AS Year
FROM Sample.Person
SELECT DISTINCT DATEPART('year','2004-02-25') AS Year
FROM Sample.Person
SELECT DISTINCT DATEPART('YY','02/25/2004') AS Year
FROM Sample.Person
SELECT DISTINCT DATEPART('YEAR',59590) AS Year
FROM Sample.Person
SELECT DISTINCT DATEPART('Year','59590,23456') AS Year
FROM Sample.Person
SELECT DISTINCT DATEPART('qq','2003-07-20') AS Quarter
FROM Sample.Person
以下の例は、すべて日付時刻文字列の分部分である 20 を返します。
SELECT DISTINCT DATEPART('mi','1999-1-20 12:20:07') AS Minutes
FROM Sample.Person
SELECT DISTINCT DATEPART('mi','1999-02-20 10:20:') AS Minutes
FROM Sample.Person
SELECT DISTINCT DATEPART('mi','1999-02-20 10:20') AS Minutes
FROM Sample.Person
以下の例は、すべて日付時刻文字列の秒部分である 0 を返します。
SELECT DISTINCT DATEPART('ss','1999-02-20 03:20:') AS Seconds
FROM Sample.Person
SELECT DISTINCT DATEPART('ss','1999-02-20 03:20') AS Seconds
FROM Sample.Person
SELECT DISTINCT DATEPART('ss','1999-02-20') AS Seconds
FROM Sample.Person
以下の例は、データ型 TIMESTAMP の文字列として完全な SQL タイムスタンプを返します。最初の例では、
DATEPART が欠けている時間情報を埋めて、タイムスタンプの '20040225 00:00:00' を返します。
SELECT DISTINCT DATEPART('sts','2/25/2004') AS DTStamp
FROM Sample.Person
SELECT DISTINCT DATEPART('sts','59590,23456') AS DTStamp
FROM Sample.Person
以下の例は、DOB フィールドの日 (Day) の部分の数値を返します。
SELECT DOB,DATEPART('dd',DOB) AS DatePt
FROM Sample.Person
例えば、DOB が 05/12/1950 であれば、
DATEPART は 12 を返します。