TO_POSIXTIME (SQL)
構文
TO_POSIXTIME(date_string[,format])
説明
TO_POSIXTIME 関数は、さまざまな形式の日付/時刻文字列をデータ型 %Library.PosixTimeOpens in a new tab の %PosixTime タイムスタンプに変換します。TO_POSIXTIME は、64 ビットの符号付き整数としてエンコードされた 1970-01-01 00:00:00 の任意の開始ポイントからの経過秒数に基づいて計算された値として %PosixTime タイムスタンプを返します。この日付からの実際の経過秒数 (および秒の小数部) は、UNIX® タイムスタンプ (数値) です。 InterSystems IRIS は、UNIX® タイムスタンプをエンコードして、%PosixTime タイムスタンプを生成します。%PosixTime タイムスタンプ値はエンコードされるため、1970-01-01 00:00:00 は 1152921504606846976 として示されます。1970-01-01 00:00:00 より前の日付は、負の整数値で示されます。詳細は、"%PosixTime データ型" を参照してください。
TO_POSIXTIME ではタイムゾーンは変換されません。ローカル日付とローカル時刻はローカル %PosixTime タイムスタンプに変換され、UTC 日付と UTC 時刻は UTC %PosixTime タイムスタンプに変換されます。
%PosixTime でサポートされる最初の日付は 0001-01-01 00:00:00 で、論理値 -6979664624441081856 を持ちます。サポートされる最後の日付は 9999-12-31 23:59:59.999999 で、論理値 1406323805406846975 を持ちます。 これらの制限は、ODBC 日付形式の表示に関する制限に対応します。%Library.PosixTimeOpens in a new tab の MINVAL パラメータと MAXVAL パラメータを使用することで、これらの値をさらに制限できます。IsValid()Opens in a new tab メソッドを使用することで、数値が有効な %PosixTime 値であるかどうかを判定できます。
%PosixTime 値は、常に小数点以下 6 桁の精度の秒の小数部をエンコードします。%PosixTime の変換前、6 桁未満の精度の date_string は 6 桁になるように 0 が追加され、7 桁以上の精度の date_string は 6 桁に切り捨てられます。
date_string でタイムスタンプのコンポーネントを省略している場合、TO_POSIXTIME では不足コンポーネントを提供します。date_string と format の両方で年が省略されている場合、現在の年が yyyy の既定値として使用されます。date_string でのみ年が省略されている場合、00 が既定値として使用されますが、年の format 要素に従って 4 桁の年に拡張されます。日または月の値が省略されている場合、01 が dd の既定値として使用され、01-01 が mm-dd の既定値として使用されます。不足する時刻コンポーネントの既定値は 00 です。秒の小数部はサポートされていますが、明示的に指定する必要があります。既定では、秒の小数部は指定されません。
TO_POSIXTIME は、2 桁の年から 4 桁の年への変換をサポートしています。TO_POSIXTIME は、12 時間形式の時刻から 24 時間形式の時刻への変換をサポートしています。うるう年の検証も含めて、日付および時刻要素値の範囲の検証機能があります。範囲検証違反がある場合は、SQLCODE -400 エラーが生成されます。
この関数は、ObjectScript から TOPOSIXTIME()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。
$SYSTEM.SQL.Functions.TOPOSIXTIME(date_string,format)
TO_POSIXTIME 関数は、フィールドに既定値を指定するときにデータ定義で使用することができます。以下はその例です。
CREATE TABLE mytest
(ID NUMBER(12,0) NOT NULL,
End_Year DATE DEFAULT TO_POSIXTIME('12-31-2018','MM-DD-YYYY') NOT NULL)
TO_POSIXTIME は、CREATE TABLE 文や ALTER TABLE ADD COLUMN 文で使用できます。このコンテキストでは、date_string にリテラル値のみを使用できます。詳細は、"CREATE TABLE" コマンドを参照してください。
%PosixTime の表現
%PosixTime は、date_string の精度に関係なく、6 桁の精度の秒の小数部をエンコードします。 ODBC モードと表示モードでは、精度の末尾の 0 が切り捨てられます。
-
論理モード : エンコードされた 64 ビット (19 文字) の符号付き整数。
-
ODBC モード : YYYY–MM–DD HH:MM:SS.FFFFFF。 "%PosixTime LogicalToOdbc()Opens in a new tab メソッド" を参照してください。
-
表示モード : $ZDATETIME で説明されているように、現在のロケールの既定の日付/時刻形式 (dformat -1 および tformat -1) が使用されます。"%PosixTime LogicalToDisplay()Opens in a new tab メソッド" を参照してください。