日付/時刻式の指定された部分の値を表す整数を返す、汎用日付/時刻関数です。
Synopsis
DATEPART(datepart,date-expression)
引数
datepart 取得する日付/時刻情報のタイプ。
date-expression 日付/時刻式。そこから指定された datepart が返されます。date-expressiondatepart タイプの値を含まなければなりません。
概要
DATEPART 関数は、指定された日付/時刻式の、指定された日付/時刻部分を表す INTEGER を返します。この情報を文字列として返すには、DATENAME を使用します。sqltimestamp オプションは、データ型 TIMESTAMP の文字列として値を返します。
DATEPART が返すのは、date-expression の 1 要素のみの値です。複数の日付部分を含む文字列を返すには、TO_DATE を使用します。
datepart パラメータは、以下の日付/時刻コンポーネントの 1 つで、正式な名前 (日付部分列) または省略形 (省略形列) のいずれかになります。これらの datepart コンポーネント名と省略形では、大文字と小文字は区別されません。
日付部分 省略形 返り値
year yy 1840-9999
quarter qq 1-4
month mm 1-12
week wk 1-53
weekday dw 1-7 (Sunday、...、Saturday)
dayofyear dy 1-366
day dd 1-31
hour hh 0-23
minute mi 0-59
second ss 0-59
millisecond ms 0-99 (2 桁の精度)
sqltimestamp sts SQL_TIMESTAMP : yy-mm-dd hh:mm:ss
リテラルとして無効な datepart 値を指定した場合は、SQLCODE -8 エラー・コードが発行されます。一方、ホスト変数として無効な datepart 値を指定した場合は、SQLCODE エラーは発行されず、DATEPART 関数は NULL 値を返します。
このテーブルに示されている返り値は、それぞれの日付部分の既定値です。これらの日付部分のいくつかの返り値は、各種日付/時刻オプションで SET OPTION コマンドを使用することで変更できます。
DATEPART では、Sybase および Microsoft SQL Server との互換性が提供されています。
以下のメソッド・コールを使用することで、Caché ObjectScript からこの関数を呼び出すこともできます。
$SYSTEM.SQL.DATEPART(datepart,date-expression)
日付の入力形式
date-expression 引数は、以下のいずれかの形式になります。
Caché %String (互換性のある) 値は、以下のいずれかの形式にできます。
Sybase/SQL-Server-date は、以下の 5 形式のいずれかです。
mmdelimiterdddelimiter[yy]yy
dd Mmm[mm][,][yy]yy
dd [yy]yy Mmm[mm]
yyyy Mmm[mm] dd
yyyy [dd] Mmm[mm]
delimiter は、スラッシュ (/)、ハイフン (-)、またはピリオド (.) です。
Sybase/SQL-Server-time は、以下の 3 形式のいずれかです。
HH:MM[:SS:SSS][{AM|PM}]
HH:MM[:SS.S]
HH['']{AM|PM}
年が 2 桁で表示される場合、%DATE ユーティリティの移動日付ウィンドウが使用され (使用できる場合)、何世紀か判断されます。
範囲と値のチェック
DATEPART は、入力値に対して以下のチェックを実行します。値がチェックに失敗した場合は、NULL 文字列が返されます。
以下の 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 が欠けている時間情報を埋めて、タイムスタンプの '2004–02–25 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 を返します。
関連項目
DATEDIFF DATENAME TIMESTAMPADD TIMESTAMPDIFF TO_DATE