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?

UNIX_TIMESTAMP

日付式を UNIX タイムスタンプに変換する日付/時刻関数です。

Synopsis

UNIX_TIMESTAMP([date-expression])

引数

date-expression オプション — 列の名前や、他のスカラ関数の結果、または日付やタイムスタンプ・リテラルである式。UNIX_TIMESTAMP は、タイムゾーン間の変換は行いません。date-expression が省略されている場合、現在の UTC タイムスタンプが既定値として使用されます。

説明

UNIX_TIMESTAMP は、UNIX® タイムスタンプ ('1970-01-01 00:00:00' からの秒数 (および秒の小数部)) を返します。

date-expression が指定されていない場合、現在の UTC タイムスタンプが date-expression の既定値として使用されます。したがって、UNIX_TIMESTAMP() は、システム全体の既定の 3 の精度を前提とする UNIX_TIMESTAMP(GETUTCDATE(3)) と同等になります。

date-expression が指定されている場合、UNIX_TIMESTAMP は、UNIX タイムスタンプの秒数を計算して、指定されている date-expression 値を UNIX タイムスタンプに変換します。UNIX_TIMESTAMP は、正または負の秒数を返すことができます。

UNIX_TIMESTAMP は、その値をデータ型 %Library.Numeric として返します。秒の小数部の精度を返すことができます。date-expression が指定されていない場合、現在構成されているシステム全体の精度が使用されます。date-expression が指定されている場合、その date-expression の精度が使用されます。

date-expression 値

オプションの date-expression は、以下の値として指定できます。

UNIX_TIMESTAMP ではタイムゾーンの変換は行われません。date-expression が UTC 時刻である場合、UTC UnixTime が返されます。date-expression がローカル時刻である場合、ローカル UnixTime 値が返されます。

秒の小数部の精度

秒の小数部は、丸められずに、常に指定された精度に切り捨てられます。%Library.TimeStampOpens in a new tab データ型形式の date-expression の最大精度は 9 にできます。サポートされる実際の桁数は、date-expression precision 引数、構成されている既定の時刻精度、およびシステム機能によって決まります。構成されている既定の時刻制度よりも大きい precision が指定されている場合、追加の精度桁数は末尾の 0 として返されます。

精度の構成

既定の精度は、以下の方法で構成できます。

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

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

  • 管理ポータルに進み、システム, 構成, 一般SQL設定 を選択します。[GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルトの時刻精度] の現在の設定を表示して編集します。

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

日付/時刻関数の比較

UNIX_TIMESTAMP は、任意の日付からの経過秒数として表される日付と時刻を返します。

GETUTCDATE は、ユニバーサルな (タイム・ゾーンに依存しない) 日付と時刻を %TimeStamp (ODBC タイムスタンプ) データ型の値として返します。

ObjectScript $ZTIMESTAMP 特殊変数を使用して、ユニバーサルな (タイムゾーンに依存しない) タイムスタンプを返すこともできます。

ObjectScript $ZDATETIME 関数の dformat -2 は、Caché $HOROLOG 日付を取り、UNIX タイムスタンプを返します。$ZDATETIMEH dformat -2 は、UNIX タイムスタンプを取り、Caché %HOROLOG 日付を返します。これらの ObjectScript 関数は、ローカル時刻を UTC 時刻に変換します。UNIX_TIMESTAMP は、ローカル時刻を UTC 時刻に変換しません。

以下の例では、UTC UNIX タイムスタンプを返しています。最初の select-item では date-expression の既定値が使用されており、2 番目の select-item では明示的な UTC タイムスタンプが指定されています。

SELECT 
   UNIX_TIMESTAMP() AS DefaultUTC,
   UNIX_TIMESTAMP(GETUTCDATE(3)) AS ExplicitUTC

以下の例では、現在のローカル日付とローカル時刻のローカル UNIX タイムスタンプ、および UTC 日付値と UTC 時刻値の UTC UNIX タイムスタンプを返しています。最初の select-item ではローカル CURRENT_TIMESTAMP、2 番目の select-item では $HOROLOG (ローカル日付とローカル時刻)、3 番目の select-item では現在の UTC 日付と UTC 時刻が指定されています。

SELECT 
   UNIX_TIMESTAMP(CURRENT_TIMESTAMP(2)) AS CurrTSLocal,
   UNIX_TIMESTAMP($HOROLOG) AS HorologLocal,
   UNIX_TIMESTAMP(GETUTCDATE(3)) AS ExplicitUTC

以下の例では、UNIX_TIMESTAMP (ローカル時刻を変換しません) と $ZDATETIME (ローカル時刻を変換します) を比較しています。

  ZNSPACE "SAMPLES"
  SET unixutc=$ZDATETIME($HOROLOG,-2)
  SET myquery = "SELECT UNIX_TIMESTAMP($HOROLOG) AS UnixLocal,? AS UnixUTC"
  SET tStatement = ##class(%SQL.Statement).%New()
  SET qStatus = tStatement.%Prepare(myquery)
   IF qStatus'=1 {WRITE "%Prepare failed:" DO $System.Status.DisplayError(qStatus) QUIT}
  SET rset = tStatement.%Execute(unixutc)
  DO rset.%Display()

関連項目

FeedbackOpens in a new tab