Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

NOW

現在のローカル日付とローカル時刻を返す日付/時刻関数です。

Synopsis

NOW()
{fn NOW}
{fn NOW()}

概要

NOW は、引数を取りません。引数の括弧は ODBC スカラ構文ではオプションですが、SQL 標準関数構文では必須です。

NOW は、このタイムゾーンの現在のローカル日付とローカル時刻をタイムスタンプとして返します。これはサマータイムなどのローカル時刻調整に合わせて調整されます。

NOW は、%TimeStamp データ型形式 (yyyy-mm-dd hh:mm:ss.ffff) でタイムスタンプを返します。

既定の日付/時刻形式を変更するには、各種日付/時刻オプションで SET OPTION コマンドを使用します。

タイムスタンプ、日付、および時刻のデータ型は、CAST または CONVERT 関数を使用して変更できます。

秒の小数部の精度

既定では、NOW は秒の小数部の精度を返しません。精度引数はサポートされません。ただし、システム全体の既定の時刻精度を変更することで、システム全体ですべての NOW 関数が秒の小数部の精度でこの構成された桁数を返すことができます。システム全体の既定の時刻精度における最初の構成設定は 0 (秒の小数部なし) で、最大設定値は 9 です。

システム全体の既定の時刻精度をオーバーライドできる precision 引数を GETDATE で用意している点を除いて、GETDATENOW と機能的に同じになります。precision 引数を省略した場合、構成されているシステム全体の既定の時刻精度が GETDATE で使用されます。

CURRENT_TIMESTAMP には、次の 2 つの構文形式があります。引数の括弧がない場合、CURRENT_TIMESTAMPNOW と機能的に同じになります。引数の括弧がある場合、CURRENT_TIMESTAMP(precision) は、CURRENT_TIMESTAMP() precision 引数が必須である点を除いて、GETDATE と機能的に同じになります。CURRENT_TIMESTAMP() は常に、指定された precision を返し、構成されたシステム全体の既定の時刻精度を無視します。

秒の小数部は、丸められずに、常に指定された精度に切り捨てられます。

SYSDATE は、引数なしの CURRENT_TIMESTAMP 関数と機能的に同じになります。

その他の現在日時関数

NOWGETDATECURRENT_TIMESTAMP、および SYSDATE はすべて、ローカル・タイム・ゾーン設定に基づいて、現在のローカル日付とローカル時刻を返します。

GETUTCDATE は、現在の UTC (協定世界時) 日付と UTC 時刻をタイムスタンプとして返します。UTC 時刻はローカル・タイム・ゾーンに依存しておらず、ローカル時刻調整 (サマータイムなど) の影響は受けないため、異なるタイム・ゾーン間のユーザが同一データベースにアクセスする場合に一貫したタイムスタンプを適用する際にこの関数は便利です。GETUTCDATE は、秒の小数部の精度をサポートします。現在の UTC タイムスタンプは、ObjectScript の $ZTIMESTAMP 特殊変数でも提供されます。

現在の日付のみを返すには、CURDATE または CURRENT_DATE を使用します。現在の時刻のみを返すには、CURRENT_TIME または CURTIME を使用します。これらの関数では、DATE または TIME データ型が使用されます。TIME データ型および DATE データ型では、値は、$HOROLOG 形式で整数として格納されます。これらの関数は、いずれも精度をサポートしません。

以下の例は、3 つの構文形式が同等であることを示しています。すべて現在のローカル日付とローカル時刻をタイムスタンプとして返します。

SELECT NOW(),{fn NOW},{fn NOW()}

以下の埋め込み SQL の例は、ローカル・タイムスタンプ (タイム・ゾーン依存) とユニバーサル・タイムスタンプ (タイム・ゾーン非依存) を比較します。

  &sql(SELECT NOW(),GETUTCDATE() INTO :a,:b)
  IF SQLCODE'=0 {
    WRITE !,"Error code ",SQLCODE }
  ELSE {
    WRITE !,"Local timestamp is:  ",a
    WRITE !,"UTC timestamp is:    ",b
    WRITE !,"$ZTIMESTAMP is:      ",$ZDATETIME($ZTIMESTAMP,3,,3)
 }

以下の例は、Orders テーブルの指定された行の LastUpdate フィールドに、現在のシステム日付と時刻を設定します。

UPDATE Orders SET LastUpdate = {fn NOW()}
  WHERE Orders.OrderNumber=:ord

関連項目

FeedbackOpens in a new tab