DATE_TRUNC (SQL)
構文
DATE_TRUNC( datePart, dateExpression )
説明
-
DATE_TRUNC(datePart, date) は、入力された date を指定された datePart まで切り捨てる日付式を返します。
-
date が %Library.PosixTimeOpens in a new tab (エンコードされた 64 ビットの符号付き整数) である場合、DATE_TRUNC からはデータ型 %Library.PosixTimeOpens in a new tab のタイムスタンプが返されます。
-
date が他の型である場合、DATE_TRUNC からはデータ型 %Library.TimeStampOpens in a new tab が yyyy-mm-dd hh:mm:ss.fff の形式で返されます。
以下の文は、日付を日の単位までに切り捨てます。
SELECT DATE_TRUNC('month', CURRENT_DATE)
-
DATE_TRUNC は、Sybase および Microsoft SQL Server と互換性があります。
引数
datePart
date をどこまで切り詰めるかを指定する、日付または時刻の部分のフルネームまたは省略した名前。datePart は大文字でも小文字でも指定できます。サポートされる日付と時刻の形式を、以下のテーブルに示します。
日付部分 | 省略形 |
---|---|
year | yyyy, yy |
month | mm, m |
quarter | qq, q |
week | wk, ww |
weekday | dw, w |
day | dd, d |
dayofyear | dy, y |
hour | hh, h |
minute | mi, n |
second | ss, s |
millisecond | ms |
microsecond | mcs |
nanosecond | ns |
date
切り詰める日付、時刻、またはタイムスタンプ式。この式は以下の型のうちのいずれかです。
-
%Date 論理値 (+$H)。$HOROLOG 形式とも呼ばれます。
-
%PosixTime (%Library.PosixTimeOpens in a new tab) 論理値 (エンコードされた 64 ビットの符号付き整数)。
-
%TimeStamp (%Library.TimeStampOpens in a new tab) 論理値 (YYYY-MM-DD HH:MM:SS.FFF)。ODBC 形式とも呼ばれます。
-
%String または文字列互換の値。以下のいずれかの形式とします。
$HOROLOG の日付と時刻の形式形式 例 ddddd SELECT DATE_TRUNC('yy','66716') ddddd,sssss SELECT DATE_TRUNC('yy','66716,256') ddddd,sssss.fff SELECT DATE_TRUNC('yy','66716,256.467') 各要素の内容は以下のとおりです。
-
ddddd : 1840 年 12 月 31 日からの経過日数 (整数値)。
-
sssss : 指定日の開始からの経過秒数。
-
fff : 秒の小数部 (整数値)。秒の小数部を指定した場合は、DATE_TRUNC の返り値にも秒の小数部が記述されます。
日付形式Format 例 MM/DD/YYYY SELECT DATE_TRUNC('year','8/24/2022') MM-DD-YY SELECT DATE_TRUNC('year','12-31-99') MM-DD-YYYY SELECT DATE_TRUNC('year','8-24-2022') MM.DD.YY SELECT DATE_TRUNC('year','12.31.99') MM.DD.YYYY SELECT DATE_TRUNC('year','8.24.2022') Mmm DD YY SELECT DATE_TRUNC('year','Dec 30 92') Mmm DD YYYY SELECT DATE_TRUNC('year','January 23 2021') Mmm DD, YY SELECT DATE_TRUNC('year','Dec 30, 92') Mmm DD, YYYY SELECT DATE_TRUNC('year','January 23, 2021') MM/DD/YY SELECT DATE_TRUNC('year','12/31/99') 各要素の内容は以下のとおりです。
-
MM : 2 桁の月。
-
DD : 月の 2 桁の日数。
-
Mmm : スペルアウト表記の月名。最低 3 文字 (例 : Mar) から完全な月名 (例 : March) まで指定できます。
-
YY は 2 桁形式、YYYY は 4 桁形式の年です。
date は日付と時刻の文字列を組み合わせて指定できます。以下に例を示します。
SELECT DATE_TRUNC('hh','12/22/2021 8:15:23')
日付を指定せずに時刻を指定すると、DATE_TRUNC では既定で日付が 01/01/1900 になりす。
時刻形式Format 例 HH: SELECT DATE_TRUNC('hour','10:') HH:MM SELECT DATE_TRUNC('mi','10:30') HH:MM:SS SELECT DATE_TRUNC('ss','10:30:59') HH...SS.FFF SELECT DATE_TRUNC('ms','10:30:59.245') HH...[AM|PM] SELECT DATE_TRUNC('mi','10:30PM') 各要素の内容は以下のとおりです。
-
HH : 1 日での 2 桁の時間値。
-
MM : 1 時間での 2 桁の分の値。
-
SS : 1 分間での 2 桁の秒の値。
-
FFF : 秒の小数部の値。
date は日付と時刻の文字列を組み合わせて指定できます。以下に例を示します。
SELECT DATEADD('hh',1,'12/22/2021 8:15:23')
時刻を指定せずに日付を指定すると、DATE_TRUNC では既定で時刻が 00:00:00 になります。
-
date 引数の制限事項と動作は以下のとおりです。
-
日付文字列は完全であると同時に、要素数、各要素の桁数、および区切り文字に適切な形式が使用されている必要があります。年は 4 桁で指定される必要があります。入力値の日付部分を省略すると、DATE_TRUNC では既定で日付が '1900-01-01' になります。
-
日付と時刻の値は、以下の有効な範囲内にあることが必要です。
-
年 — 0001 から 9999
-
月 — 1 から 12
-
日 — 1 から 31
-
時間 — 00 から 23
-
分 — 0 から 59
-
秒 — 0 から 59
月の日数は、該当月と該当年に合ったものでなければなりません。例えば、日付 '02-29' が有効なのは、指定された年がうるう年の場合のみです。
-
-
10 (月および日) 未満の日付値では、先頭のゼロを省略してもかまいません。その他の非標準的な整数値は許可されません。例えば、Day の値として '07' と '7' は有効ですが、'007'、'7.0'、'7a' は無効です。
-
時刻値は省略してもかまいません。date で不完全な時刻が指定されている場合、指定されていない部分に対して 0 が指定されます。
-
10 よりも小さい時間値の先頭の 0 は記載する必要があります。
例
以下の例は、$HOROLOG 形式で記述された日付に対して DATE_TRUNC 関数を実行します。この例の結果は、2023–08–30 00:04:16 となります。
SELECT DATE_TRUNC('ss','66716,256.467')
以下の例は、文字列として記述された日付に対して DATE_TRUNC 関数を実行します。結果は、1980–01–01 00:00:00 となります。
SELECT DATE_TRUNC('yy','11.25.80')
以下の例は、CURRENT_DATE を使用して DATE_TRUNC 関数を実行します。結果は日付によって異なりますが、日付は日の単位まで切り捨てられます。
SELECT DATE_TRUNC('dd', CURRENT_DATE)
別の方法
ObjectScript コードでこの関数を呼び出すには、DATE_TRUNC() メソッドを使用します。
$SYSTEM.SQL.Functions.DATE_TRUNC(datePart, dateExpression)