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?

GETUTCDATE

現在の UTC 日付と UTC 時刻を返す日付/時刻関数です。

Synopsis

GETUTCDATE([precision])

引数

precision オプション — 時刻の精度を秒の小数部の桁数として指定する正の整数。既定値は 0 (秒の小数部なし) です。この既定値は構成可能です。

説明

GETUTCDATE は、UTC (協定世界時) 日付と UTC 時刻をタイムスタンプとして返します。UTC 時刻は世界共通で、ローカル・タイム・ゾーンに依存しておらず、ローカル時刻調整 (サマータイムなど) の影響は受けないため、異なるタイム・ゾーン間のユーザが同一データベースにアクセスする場合に一貫したタイムスタンプを適用する際にこの関数は便利です。

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

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

GETUTCDATE は、主に SELECT 文のセレクト・リストや、クエリの WHERE 節で使用されます。レポートの設計では、GETUTCDATE は、レポートが作成されるたびに、そのときの時刻/日付を印刷するために使用できます。また GETUTCDATE は、トランザクションが発生した時刻のログ記録など、活動を追跡するのに便利です。

GETUTCDATE は、フィールドの既定値を指定するために CREATE TABLE 内で使用できます。

その他の SQL 関数

GETUTCDATE は、現在の UTC 日付と UTC 時刻をタイムスタンプとして返します。

その他のタイムスタンプ関数はすべて、ローカル日付とローカル時刻を返します。GETDATECURRENT_TIMESTAMPNOW、および SYSDATE は、現在のローカル日付とローカル時刻をタイムスタンプとして返します。

GETDATECURRENT_TIMESTAMP では、precision 引数が用意されています。

NOW、引数なしの CURRENT_TIMESTAMP、および SYSDATE では、precision 引数は用意されていません。これらの関数では、システム全体の既定の時刻精度が使用されます。

CURDATECURRENT_DATE は、現在のローカル日付を返します。CURTIMECURRENT_TIME は、現在のローカル時刻を返します。これらの関数では、データ型として DATE または TIME を使用します。これらの関数は、いずれも精度をサポートしません。

TIMESTAMP データ型は、同じ形式で値を格納および表示します。TIME および DATE の各データ型では $HOROLOG 形式の整数として値が格納されますが、その値はさまざまな形式で表示できます。

Caché SQL のタイムスタンプ関数は、GETUTCDATE を除いてすべて、それぞれのローカル・タイム・ゾーン設定に固有です。タイム・ゾーンに依存しない世界時による現在のタイムスタンプの取得には、ObjectScript の $ZTIMESTAMP 特殊変数も使用できます。GETUTCDATE では precision を設定できますが、$ZTIMESTAMP では常に 3 の精度が返されます。

秒の小数部の精度

GETUTCDATE では、小数点以下 9 桁までの精度の値を返すことができます。返される精度の桁数は precision 引数を使用して設定されます。precision 引数の既定値は、以下の方法で構成できます。

  • SET OPTION で TIME_PRECISION オプションを使用します。

  • $SYSTEM.SQL.SetDefaultTimePrecision()Opens in a new tab メソッド呼び出し。

  • 管理ポータルに移動し、[構成][SQL およびオブジェクトの設定][一般 SQL 設定] (システム, 構成, 一般SQL設定) の順に選択します。[GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルトの時刻精度] の現在の設定を表示して編集します。

返される精度の小数点以下の桁数の既定値に 0 ~ 9 の整数を指定します。既定値は 0 です。実際に返される精度はプラットフォームに依存し、システムで使用可能な精度を超えた precision の桁はゼロとして返されます。

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

以下の例は、現在の日付と時刻を TIMESTAMP 形式の UTC タイムスタンプ、およびローカル・タイムスタンプとして返します。

SELECT GETUTCDATE() AS UTCDateTime,
       GETDATE() AS LocalDateTime

以下の例は、現在の UTC 日付と時刻で、秒の小数部を 2 桁の精度として返します。

SELECT GETUTCDATE(2) AS DateTime

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

  &sql(SELECT GETDATE(),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 フィールドに、現在の UTC 日付と UTC 時刻を設定します。GETUTCDATE は、現在の UTC 日付と UTC 時刻を ODBC タイムスタンプとして返します。

UPDATE Orders SET LastUpdate = GETUTCDATE()
  WHERE Orders.OrderNumber=:ord

以下の例では、CREATE TABLE 文は GETUTCDATE を使用して、OrderRcvd フィールドに対して既定値を設定します。

CREATE TABLE Orders(
     OrderId     INT NOT NULL,
     ItemName    CHAR(40) NOT NULL,
     Quantity    INT NOT NULL,
     OrderRcvd   TIMESTAMP DEFAULT GETUTCDATE())

関連項目

FeedbackOpens in a new tab