DAYOFMONTH (SQL)
構文
{fn DAYOFMONTH(date-expression)}
概要
DAYOFMONTH は、月における日付を 1 ~ 31 の整数で返します。date-expression には、InterSystems IRIS 日付整数、$HOROLOG 値や $ZTIMESTAMP 値、ODBC 形式の日付文字列、またはタイムスタンプを指定できます。
date-expression タイムスタンプには、データ型 %Library.PosixTimeOpens in a new tab (エンコードされた 64 ビットの符号付き整数) またはデータ型 %Library.TimeStampOpens in a new tab (yyyy-mm-dd hh:mm:ss.fff) のいずれかを指定できます。
タイムスタンプまたは $HOROLOG 文字列の時刻部分は評価されないため省略可能です。
DAYOFMONTH 関数と DAY 関数は機能的に同一です。
この関数は、ObjectScript から DAYOFMONTH()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。
WRITE $SYSTEM.SQL.Functions.DAYOFMONTH("2018-02-25")
タイムスタンプの date-expression
タイムスタンプ文字列の日 (dd) 部分は、1 から 31 までの範囲の整数でなければなりません。ただし、ユーザの指定値に対して、範囲チェックは行われません。31 よりも大きな数と小数は、指定されたとおりに返されます。(–) は区切り文字として使用されるため、負の数はサポートされません。入力では、先頭のゼロはオプションです。出力では、先頭のゼロは抑制されます。
日部分が '0'、'00'、または数以外の値の場合、DAYOFMONTH は NULL を返します。日付文字列の日部分が完全に省略されている場合 ('yyyy–mm hh:mm:ss')、または日付式が指定されていない場合も、同様に NULL が返されます。
日付/時刻文字列の要素は、SQL スカラ関数の YEAR、MONTH、DAYOFMONTH (または DAY)、HOUR、MINUTE、SECOND をそれぞれ使用して取得できます。DATEPART または DATENAME 関数を使用して、同じ要素を取得することもできます。DATEPART および DATENAME では、日の値に対して値と範囲のチェックが行われます。
$HOROLOG の date-expression
$HOROLOG 値の月の日付を計算するときは、DAYOFMONTH では、うるう年の違いが計算されます (2000 年はうるう年で 1900 年と 2100 年はうるう年ではないという、1 世紀の日付調整など)。
DAYOFMONTH では、1840 年 12 月 31 日 よりも前の date-expression 値を負の整数として処理できます。詳細は、以下の例を参照してください。
SELECT {fn DAYOFMONTH(-306)} AS DayOfMonthFeb, /* February 29, 1840 */
{fn DAYOFMONTH(-305)} AS DayOfMonthMar, /* March 1, 1840 */
{fn DAYOFMONTH(-127410)} AS DayOfMonthFeb /* February 29, 1492 */
LAST_DAY 関数は、指定された日付の月の最後の日付を返します ($HOROLOG 形式)。
引数
date-expression
月における日付の値を返す元となる日付またはタイムスタンプ式です。列の名前や、他のスカラ関数の結果、または日付やタイムスタンプ・リテラルである式。
例
以下の例は、指定された日付がその月の 25 番目の日であるため 25 を返します。
SELECT {fn DAYOFMONTH('2018-02-25')} AS DayNumTS,
{fn DAYOFMONTH(64704)} AS DayNumH
以下の例も、月の日付として数値 25 を返します。年は省略されていますが、区切り文字列 (–) がプレースホルダとしての役割を果たしています。
SELECT {fn DAYOFMONTH('-02-25 11:45:32')} AS DayNum
以下の例は、<null> を返します。
SELECT{fn DAYOFMONTH('2018-02-00 11:45:32')} AS DayNum
SELECT {fn DAYOFMONTH('2018-02 11:45:32')} AS DayNum
SELECT {fn DAYOFMONTH('11:45:32')} AS DayNum
以下の DAYOFMONTH の例はすべて、月における今日の日付を示す値を返します。
SELECT {fn DAYOFMONTH({fn NOW()})} AS DoM_Now,
{fn DAYOFMONTH(CURRENT_DATE)} AS DoM_CurrD,
{fn DAYOFMONTH(CURRENT_TIMESTAMP)} AS DoM_CurrTS,
{fn DAYOFMONTH($HOROLOG)} AS DoM_Horolog,
{fn DAYOFMONTH($ZTIMESTAMP)} AS DoM_ZTS
$ZTIMESTAMP は協定世界時 (UTC) を返すことに注意してください。その他の time-expression 値はローカル時刻を返します。これは、DAYOFMONTH 値に影響することがあります。
以下の例は、先頭のゼロが抑制されることを示します。月の日付の値に応じて、1 または 2 の長さを返します。
SELECT LENGTH({fn DAYOFMONTH('2018-02-05')}),
LENGTH({fn DAYOFMONTH('2018-02-15')})