Skip to main content

DATE_TRUNC (SQL)

指定された精度に切り捨てられるタイムスタンプを返す日付/時刻関数。

構文

DATE_TRUNC( datePart, dateExpression )

説明

  • DATE_TRUNC(datePart, date) は、入力された date を指定された datePart まで切り捨てる日付式を返します。

    以下の文は、日付を日の単位までに切り捨てます。

    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)

関連項目

FeedbackOpens in a new tab