Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

DATE (SQL)

タイムスタンプを取得して、日付を返す関数です。

Synopsis

DATE(timestamp)

説明

  • DATE(timestamp) はタイムスタンプの式を取得し、データ型が DATE の日付を返します。この関数は CAST(timestamp as DATE) と同等です。

    以下の文は、タイムスタンプ文字列を日付に変換します。タイムスタンプの時刻部分は検証されますが、返されません。

    SELECT DATE('2000-01-01 00:00:00') AS StringToDate -- Display Mode: 01/01/2000

    例 : さまざまな形式のタイムスタンプの日付への変換

引数

timestamp

タイムスタンプ、日付、または日時の表現を指定する式です。以下のいずれかのデータ型クラスとして timestamp を指定します。

数値タイムスタンプ

特殊変数 $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")

関連項目

FeedbackOpens in a new tab