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?

HOUR

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

Synopsis

{fn HOUR(time-expression)}

引数

time-expression 列の名前や、他のスカラ関数の結果、または文字列や日付や数値リテラルである式。日付/時刻文字列または時刻整数に解決される必要があります。基本となるデータ型は、%Time または %TimeStamp とすることができます。

概要

HOUR は、指定された時刻または日付/時刻値に対して時間の部分を示す整数を返します。時間は、$HOROLOG 値や $ZTIMESTAMP 値、ODBC 形式の日付文字列、またはタイムスタンプに基づいて計算されます。

time-expression タイムスタンプはデータ型 %Library.TimeStampOpens in a new tab (yyyy-mm-dd hh:mm:ss.fff) です。

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

時刻整数 (経過秒数) は指定できますが、時刻文字列 (hh:mm:ss) は指定できません。 日付/時刻文字列 (yyyy-mm-dd hh:mm:ss) を指定する必要があります。日付/時刻文字列の秒 (:ss) または分および秒 (mm:ss) の部分を省略しても、 時刻部分を返すことができます。time-expression は、%Library.FilemanDate、%Library.FilemanTimestamp、%MV.Date のいずれかのデータ型として指定することもできます。

時間は 24 時間法で表されます。時間 (hh) 部分は、0 から 23 までの範囲の整数でなければなりません。ただし、ユーザの指定値に対して、範囲チェックは行われません。23 よりも大きな数、負の数、および小数は、指定されたとおりに返されます。入力では、先頭のゼロはオプションです。出力では、先頭のゼロは抑制されます。

時間部分が '0'、'00'、または数値でない値の場合、HOUR は 0 を返します。また、時刻式が指定されていない場合や、時刻文字列の時間部分が省略されている場合 (':mm:ss' または '::ss') やも、ゼロ時が返されます。

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

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

$SYSTEM.SQL.HOUR(time-expression)

以下の 2 つの例は、time-expression 値が 18:45:38 なので、共に数値 18 を返します。

SELECT {fn HOUR('2000-02-16 18:45:38')} AS Hour_Given
SELECT {fn HOUR(67538)} AS Hour_Given

以下の例も 18 を返します。時刻値の秒 (または分と秒) 部分は省略できます。

SELECT {fn HOUR('2000-02-16 18:45')} AS Hour_Given

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

SELECT {fn HOUR('2000-02-16')} AS Hour_Given

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

SELECT {fn HOUR(CURRENT_TIME)} AS H_CurrentT,
       {fn HOUR({fn CURTIME()})} AS H_CurT,
       {fn HOUR({fn NOW()})} AS H_Now,
       {fn HOUR($HOROLOG)} AS H_Horolog,
       {fn HOUR($ZTIMESTAMP)} AS H_ZTS

$ZTIMESTAMP は協定世界時 (UTC) を返すことに注意してください。その他の time-expression 値はローカル時刻を返します。

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

SELECT LENGTH({fn HOUR('2004-02-05 11:45')}),
       LENGTH({fn HOUR('2004-02-15 03:45')}),
       LENGTH({fn HOUR('2004-02-15 3:45')}),
       LENGTH({fn HOUR('2004-02-15')})

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

  DO ##class(%SYS.NLS.Format).SetFormatItem("TimeSeparator",".")
  &sql(SELECT {fn HOUR('2000-02-16 18.45.38')} INTO :a)
  WRITE "hour=",a

関連項目

FeedbackOpens in a new tab