DAYOFYEAR (SQL)
構文
{fn DAYOFYEAR(date-expression)}
概要
DAYOFYEAR は、指定された日付式の日付がその年の日付に対応する 1 から 366 までの整数を返します。DAYOFYEAR はうるう年の日付にも対応します。
年における日付は、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 値の月の日付を計算するときは、DAYOFYEAR では、うるう年の違いが計算されます (2000 年はうるう年で 1900 年と 2100 年はうるう年ではないという、1 世紀の日付調整など)。
DAYOFYEAR では、1840 年 12 月 31 日 よりも前の date-expression 値を負の整数として処理できます。詳細は、以下の例を参照してください。
SELECT {fn DAYOFYEAR(-306)} AS LastDayFeb, /* February 29, 1840 */
{fn DAYOFYEAR(-305)} AS FirstDayMar /* March 1, 1840 */
最も早い有効な date-expression は -672045 です (1年 1 月 1 日)。
DATEPART または DATENAME 関数を使用して、同じ日付カウントを取得することもできます。DATEPART および DATENAME では、日付式に対して値と範囲のチェックが行われます。
この関数は、ObjectScript から DAYOFYEAR()Opens in a new tab メソッド・コールを使用して呼び出すこともできます。
$SYSTEM.SQL.Functions.DAYOFYEAR(date-expression)
引数
date-expression
列の名前、他のスカラ関数の結果、または日付やタイムスタンプのリテラルによる、日付式。
例
以下の例は、日付式の日 (2016 年 3 月 4 日) がその年の 64 番目の日であるため、ともに整数 64 を返します (うるう年の日付であることが自動的に計算されます)。
SELECT {fn DAYOFYEAR('2016-03-04 12:45:37')} AS DayCount
SELECT {fn DAYOFYEAR(63981)} AS DayCount
以下の例はすべて、今日の日付を示す値を返します。
SELECT {fn DAYOFYEAR({fn NOW()})} AS DNumNow,
{fn DAYOFYEAR(CURRENT_DATE)} AS DNumCurrD,
{fn DAYOFYEAR(CURRENT_TIMESTAMP)} AS DNumCurrTS,
{fn DAYOFYEAR($HOROLOG)} AS DNumHorolog,
{fn DAYOFYEAR($ZTIMESTAMP)} AS DNumZTS
$ZTIMESTAMP は協定世界時 (UTC) を返すことに注意してください。その他の time-expression 値はローカル時刻を返します。これは、DAYOFYEAR 値に影響することがあります。
以下の例では、サブクエリを使用して、誕生日の年間通算日順で並べ替えて Employee レコードが返されるようにします。
SELECT Name,DOB
FROM (SELECT Name,DOB,{fn DAYOFYEAR(DOB)} AS BDay FROM Sample.Employee)
ORDER BY BDay
関連項目
-
SQL 関数:DATENAME、DATEPART、DAYNAME、DAYOFMONTH、DAYOFWEEK
-
ObjectScript 特殊変数: $HOROLOG、$ZTIMESTAMP