に最終更新
日付型リテラル
説明
標準 SQL と同様に、Doris では日付リテラルを指定する際に型キーワードと文字列を使用する必要があります。キーワードと文字列の間のスペースは省略できます。例:
DATE '2008-08-08'
TIMESTAMP '2008-08-08 20:08:08'
日付の形式
DATE リテラル
-で区切られた文字列の場合は、'YYYY-MM-DD'または'YY-MM-DD'の形式を使用します。Doris は MySQL の非標準の区切り文字を使用する形式にも対応していますが、その使用は推奨しません。- 区切り文字のない文字列の場合は、
'YYYYMMDD'または'YYMMDD'の形式を使用します(文字列が日付として有効な場合)。
DATETIME、TIMESTAMP_NS、TIMESTAMPTZ リテラル
-で区切られた文字列の場合は、'YYYY-MM-DD hh:mm:ss'または'YY-MM-DD hh:mm:ss'の形式を使用します。Doris は MySQL の非標準の区切り文字を使用する形式にも対応していますが、その使用は推奨しません。日付と時刻の区切り文字には、スペース()またはTを使用できます。MySQL 8.4 以前とは異なり、Doris は日付と時刻の間にこれ以外の区切り文字をサポートしません。- 区切り文字のない文字列の場合は、
'YYYYMMDDhhmmss'または'YYMMDDhhmmss'の形式を使用します(文字列が日付として有効な場合)。
日時リテラルには秒の小数部を含めることができます。DATETIME と TIMESTAMPTZ は最大六桁(マイクロ秒)、TIMESTAMP_NS は最大九桁(ナノ秒)を保持します。超過した桁は、対象の型の精度に合わせて丸められます。小数部は時刻の残りの部分とピリオド(.)で区切る必要があります。秒の小数部に他の区切り文字は認識されません。
二桁の年
年が二桁で表された日付は、世紀が特定できないため曖昧です。Doris は次の規則で二桁の年を解釈します。
- 70~99 は 1970~1999 年として解釈します。
- 00~69 は 2000~2069 年として解釈します。
タイムゾーン
DATE、DATETIME、TIMESTAMP_NS、TIMESTAMPTZ のリテラルには、タイムゾーンの接尾辞を指定できます。タイムゾーンを指定する場合は、直前の日付または時刻の部分との間にスペースを入れず、続けて記述する必要があります。例:
TIMESTAMP '2008-08-08 20:08:08+08:00'
Doris がサポートするタイムゾーンの形式は次のとおりです。
- タイムゾーンのオフセット:形式は
{+ | -}hh:mmです。たとえば、UTC+8 は+08:00です。 - タイムゾーン名:たとえば、上海のタイムゾーンは
Asia/Shanghaiです。
無効な値の処理
有効な日付リテラルとして解析できない値が指定された場合、Doris は直接エラーを報告します。例:
SELECT date '071332'
次のエラーが発生します。
date/datetime literal [071332] is invalid