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

SECOND (SQL)

日付/時刻式に対して秒を返す時刻関数です。

Synopsis

{fn SECOND(time-expression)}

引数

引数 説明
time-expression 列の名前や、他のスカラ関数の結果、または文字列や日付や数値リテラルである式。タイムスタンプ文字列または $HOROLOG 文字列のどちらかに解決する必要があります。基本となるデータ型は、%Time、%TimeStamp、または %PosixTime とすることができます。

概要

SECOND は、0 ~ 59 の整数を返します。小数の秒を返すこともできます。秒は、$HOROLOG 値や $ZTIMESTAMP 値、ODBC 形式の日付文字列 (時刻値なし)、またはタイムスタンプに基づいて計算されます。

time-expression タイムスタンプには、データ型 %Library.PosixTimeOpens in a new tab (エンコードされた 64 ビットの符号付き整数) またはデータ型 %Library.TimeStampOpens in a new tab (yyyy-mm-dd hh:mm:ss.fff) のいずれかを指定できます。

既定の時刻形式を変更するには、SET OPTION コマンドを使用します。

タイムスタンプ文字列 (yyyy-mm-dd hh:mm:ss) または $HOROLOG 文字列のどちらかを指定する必要があります。$HOROLOG 文字列は、完全な日付/時刻文字列 (63274,37279) か、$HOROLOG の時刻整数部分のみ (37279) にできます。時刻文字列 (hh:mm:ss) は指定できません。これは、実際の秒数に関係なく、必ず 0 を返します。

日付/時刻文字列の時刻部分は有効な時刻である必要があります。それ以外の場合には、SQLCODE -400 エラー <ILLEGAL VALUE> が生成されます。秒 (ss) 部分は、0 から 59 までの範囲の整数である必要があります。入力では、先頭のゼロはオプションです。出力では、先頭のゼロは抑制されます。

日付/時刻文字列の日付部分は検証されません。

秒部分が '0' または '00' の場合、SECOND は 0 秒を返します。時刻式がない ODBC 日付が指定されている場合、または時刻式の秒部分が完全に省略されている場合 ('hh'、'hh:mm'、'hh:mm:'、または 'hh::') にも、ゼロ秒が返されます。

DATEPART または DATENAME を使用して、同じ時刻情報を取得できます。

この関数は、ObjectScript から SECOND()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。

$SYSTEM.SQL.Functions.SECOND(time-expression)

秒の小数部

time-expression で指定されると、SECOND は秒の小数部を返します。末尾のゼロは切り捨てられます。秒の小数部が指定されない場合 (例 : 38.00)、小数点区切り文字も切り捨てられます。

時刻値 ($HOROLOG) の標準 InterSystems IRIS 内部表現は、秒の小数部をサポートしません。タイムスタンプは、秒の小数部をサポートします。

以下の SQL 関数、SECONDCURRENT_TIMESTAMPDATENAMEDATEPART、および GETDATE は、秒の小数部をサポートします。CURTIMECURRENT_TIME、および NOW は秒の小数部をサポートしません。

SQL SET OPTION 文では、秒の小数部に既定の精度 (小数桁数) を設定できます。

ObjectScript $ZTIMESTAMP 特殊変数は、秒の小数部を表すために使用できます。ObjectScript 関数の $ZDATETIME$ZDATETIMEH$ZTIME、および $ZTIMEH は、秒の小数部をサポートします。

以下の例は、時刻式が 38 秒を表しているので、どちらも 38 を返します。

SELECT {fn SECOND('2018-02-16 18:45:38')} AS ODBCSeconds
SELECT {fn SECOND(67538)} AS HorologSeconds

以下の例は、.9 秒 を返します。先頭や末尾のゼロは、切り捨てられます。

SELECT {fn SECOND('2018-02-16 18:45:00.9000')} AS Seconds_Given

以下の例は、日付/時刻文字列の秒部分が省略されているので、ゼロ秒を返します。

SELECT {fn SECOND('2018-02-16 18:45')} AS Seconds_Given

以下の例は、日付/時刻文字列から時刻式が省略されているので、ゼロ秒を返します。

SELECT {fn SECOND('2018-02-16')} AS Seconds_Given

以下の例はすべて、現在の時刻の秒部分を整数で返します。

SELECT {fn SECOND(CURRENT_TIME)} AS Sec_CurrentT,
       {fn SECOND({fn CURTIME()})} AS Sec_CurT,
       {fn SECOND({fn NOW()})} AS Sec_Now,
       {fn SECOND($HOROLOG)} AS Sec_Horolog,
       {fn SECOND($ZTIMESTAMP)} AS Sec_ZTS

以下の例は、先頭のゼロが抑制されることを示します。最初の SECOND 関数は長さ 2 を返し、その他は長さ 1 を返します。省略された時刻はゼロ秒と見なされ、1 の長さを持ちます。

SELECT LENGTH({fn SECOND('2018-02-15 11:45:22')}),
       LENGTH({fn SECOND('2018-02-15 03:05:06')}),
       LENGTH({fn SECOND('2018-02-15 3:5:6')}),
       LENGTH({fn SECOND('2018-02-15')})

以下の埋め込み SQL の例では、SECOND 関数が、ロケールに指定された TimeSeparator 文字を認識していることを示しています。

  DO ##class(%SYS.NLS.Format).SetFormatItem("TimeSeparator",".")
  &sql(SELECT {fn SECOND('2018-02-16 18.45.38')} INTO :a)
  QUIT:(SQLCODE '= 0)
  WRITE "seconds=",a

関連項目

FeedbackOpens in a new tab