DATE (SQL)
構文
DATE(timestamp)
説明
引数
timestamp
タイムスタンプ、日付、または日時の表現を指定する式です。以下のいずれかのデータ型クラスとして timestamp を指定します。
-
暗黙的な論理タイムスタンプ形式の %Library.NumericOpens in a new tab の値 (+$HOROLOG など)。"数値タイムスタンプ" を参照してください。
-
%Library.TimeStamp と互換性のある %Library.StringOpens in a new tab の値。"文字列タイムスタンプ" を参照してください。
数値タイムスタンプ
特殊変数 $HOROLOG および $ZTIMESTAMP は、現在の日付を数値文字列として指定します。DATE は、このような文字列を、1840 年 12 月 31 日を表す 0 にキャストします。
SELECT
DATE($HOROLOG), -- Returns 0 (12/31/1840)
DATE($ZTIMESTAMP) -- Returns 0 (12/31/1840)
$HOROLOG または $ZTIMESTAMP を現在の日付として解釈するには、日付の前にプラス (+) 符号を付加することによって数値として解釈されるようにする必要があります。
SELECT
DATE(+$HOROLOG), -- Returns the current date
DATE(+$ZTIMESTAMP) -- Returns the current date
文字列タイムスタンプ
DATE 形式に変換した文字列タイムスタンプには、%Library.TimeStampOpens in a new tab データ型との互換性が必要です。このデータ型で ODBC 日付形式の文字列を格納し、この形式に基づいて DATE 関数で入力文字列を検証します。文字列の検証で問題がなければ、DATE から対応する日付が返されます。検証が失敗すると、DATE からは 1840 年 12 月 31 日に相当する 0 が返されます。空の文字列 ('') を指定した場合も 0 が返されます。NULL 引数は NULL を返します。
DATE では以下の検証が実行されます。
-
文字列が ODBC 形式に対応していること。fff は秒の小数部です。
yyyy-mm-dd hh:mm:ss.fff
-
文字列に少なくとも完全な日付 yyyy-mm-dd が指定されていること。時刻部分は省略できます。DATE では指定した時刻が検証されますが、その時刻は返されません。任意の時刻を指定できます。例えば、「yyyy-mm-dd hh:」と入力します。
-
文字列に無効な形式の文字や文字列の末尾に文字が使用されていないこと。先頭のゼロは省略しても指定してもかまいません。
-
オプションの時刻部分も含め、文字列の数値要素に指定された範囲の有効な値が各要素に使用されていること。以下に例を挙げます。
-
月の値が 1 ~ 12 の範囲にあること。
-
日付の値が、うるう年も考慮して、指定された月の日付範囲にあること。
-
日付が 0001-01-01 から 9999-12-31 の範囲にあること。
-
例
さまざまな形式のタイムスタンプの日付への変換
以下の文は、データ型 %Library.TimeStampOpens in a new tab のタイムスタンプを DATE データ型に変換します。
SELECT
{fn NOW} AS NowCol,
DATE({fn NOW}) AS DateCol
SELECT
CURRENT_TIMESTAMP AS TSCol,
DATE(CURRENT_TIMESTAMP) AS DateCol
SELECT
GETDATE() AS GetDateCol,
DATE(GETDATE()) AS DateCol
以下の文は、%Library.TimeStampOpens in a new tab 形式で記述された文字列を DATE に変換します。
SELECT
'2022-05-22 13:14:23' AS DateStrCol,
DATE('2022-05-22 13:14:23') AS DateCol
以下の文は、%Library.PosixTimeOpens in a new tab タイムスタンプを DATE に変換します。
SELECT
TO_POSIXTIME('2022-05-22','YYYY-MM-DD') AS PosixCol,
DATE(TO_POSIXTIME('2022-05-22','YYYY-MM-DD')) AS DateCol
以下の文は、InterSystems IRIS® の論理形式で日付を表現した文字列値を DATE に変換します。この文字列値を正しく変換するには、文字列の前にプラス符号 (+) を付加することにより、数値が評価されるようにする必要があります。
SELECT
$H AS HoroCol,
DATE(+$H) AS DateCol
SELECT
$ZTIMESTAMP AS TSCol,
DATE(+$ZTIMESTAMP) AS DateCol
別の方法
コードを使用して ObjectScript でタイムスタンプと日付を上記と同様に変換するには DATE()Opens in a new tab メソッドを使用します。
WRITE $SYSTEM.SQL.Functions.DATE("2018-02-23 12:37:45")
関連項目
-
CAST 関数
-
CURDATE および CURRENT_DATE 関数
-
GETUTCDATE 関数
-
NOW 関数
-
TO_TIMESTAMP 関数
-
$HOROLOG 特殊変数
-
$ZTIMESTAMP 特殊変数