すべてのプロダクト
Search
ドキュメントセンター

PolarDB:日付と時刻のタイプ

最終更新日:Jul 01, 2024

このトピックでは、 分散リレーショナルデータベースサービス (DRDS) でサポートされる日付と時刻のデータ型について説明します。

説明

以下の日付と時刻の種類に関する説明では、テーブルが作成または変更されたときに、polar_comp_redwood_date設定パラメーターがtrueに設定されていると仮定します。

データと時間の種類

ストレージサイズ

説明

最小値

最大値

精度

DATE

8 バイト

タイムゾーンのない日付と時刻。

4713 BC

5874897 AD

1 秒

INTERVAL DAY TO SECOND [(p)]

12 バイト

カスタム精度の期間。

-178000000 年

178000000 年

1マイクロ秒 /14ビット

INTERVAL YEAR TO MONTH

12 バイト

時間範囲のリスト。

-178000000 年

178000000 年

1マイクロ秒 /14ビット

TIMESTAMP [(p)]

8 バイト

日付と時刻のタイムスタンプ。

4713 BC

5874897 AD

1 マイクロ秒

TIMESTAMP [(p)] WITH TIME ZONE

8 バイト

タイムゾーンの日付と時刻のタイムスタンプ。

4713 BC

5874897 AD

1 マイクロ秒

TIME [(p)]

8 バイト

1日の時間だけ。

00:00:00

24:00:00

1ミリ秒 /14ビット

TIME [(p)] WITH TIME ZONE

12 バイト

タイムゾーンを持つ1日の時間のみ。

00:00:00 + 1459

24:00:00-1459

1ミリ秒 /14ビット

DATEキーワードが、CREATE tableやALTER TABLEなどのデータ定義言語 (DDL) ステートメントでデータベーステーブルの列のデータ型として表示されるとします。 この場合、テーブルの定義がデータベースに保存されているときに、DATE値が自動的にTIMESTAMP(0) 型に変換されます。 したがって、DATE値の時間フィールドも列に格納されます。

次のいずれかの状況が発生したとします。DATEキーワードは、ストアドプロシージャ言語 (SPL) 宣言セクションの変数のデータ型として表示されます。 DATEキーワードは、SPLプロシージャまたはSPL関数の仮パラメーターのデータ型として表示されます。 DATEキーワードは、SPL関数の出力として表示されます。 この場合、DATE値はTIMESTAMP(0) 型に変換されます。 したがって、DATEは時間フィールドも処理できます。

TIMESTAMPは、秒フィールドに保持される分数桁数を指定するオプションの精度値pを受け入れます。 pの有効な値は0〜6の範囲である。 デフォルト値は 6 です。

デフォルトでは、TIMESTAMP値は倍精度浮動小数点数として格納されます。 この場合、精度の有効限界は6未満とすることができる。 TIMESTAMP 値は、2000 年 1 月 1 日の午前 0 時の前後の秒数として格納されます。 マイクロ秒の精度は、2000年1月1日の数年以内の日付で達成されますが、それ以降の日付では精度が低下します。 TIMESTAMP値がコンパイル時オプションである8バイトの整数として格納されている場合、マイクロ秒の精度は値の全範囲で使用できます。 ただし、8バイトの整数タイムスタンプの日付の範囲は、前の表に記載されている日付よりも制限されています。 この値は、4713 BC〜294276 ADの範囲である。

TIMESTAMP (p) WITH TIME ZONEはTIMESTAMP (p) と似ていますが、前者のタイプにはタイムゾーンが含まれています。

INTERVALタイプ

INTERVAL 値は期間を指定します。 INTERVAL型の値は、データ値を記述するフィールドで構成されます。 次の表に、INTERVAL型で使用できるフィールドを示します。

フィールド

有効値

YEAR

整数値 (正または負) 。

MONTH

0から11。

DAY

整数値 (正または負) 。

HOUR

0から23。

MINUTE

0から59。

SECOND

ここで、59.9(p) は分数秒の精度である。

フィールドは、YEARSからMONTHS、DAYSからHOURS、MINUTESからSECONDSの降順で表示する必要があります。

PolarDBは、Oracleと互換性のある2つのINTERVAL型をサポートします。

  • PolarDBによってサポートされる第1の変数は、INTERVAL DAY TO SECOND [(p)] である。 この変数には、日、時間、分、秒単位の時間間隔が格納されます。

    説明

    p は、秒フィールドの精度を指定します。

    PolarDB内の次の値の意味:

    • INTERVAL '1 2:34:5.678' DAY TO SECOND(3)

      ある日、2時間34分5秒、678千分の1秒。

    • INTERVAL '1 23' DAY TO HOUR

      1日23時間。

    • INTERVAL '2:34' HOUR TO MINUTE

      2時間34分。

    • INTERVAL '2:34:56.129 'HOUR TO SECOND(2)

      2時間、34分、56秒、1千分の1秒。

      説明

      指定された精度のため、分数秒は13に切り上げられます。

  • PolarDBでサポートされる2番目のOracle互換変数は、INTERVAL YEAR TO MONTHです。 この変数は、年と月の時間間隔を格納します。

    PolarDB内の次の値の意味:

    • INTERVAL '12-3' YEAR TO MONTH

      12年と3ヶ月。

    • INTERVAL '45' YEAR

      45年だ

    • INTERVAL '300' MONTH

      25年だ

日付と時間の入力

日付と時刻の入力は、ISO 8601 SQL互換形式、Oracleのデフォルトのdd-MON-yy形式、および明確な年、月、日の値を持つその他の形式です。 ただし、あいまいさを避けるために TO_DATE 関数を使用することを推奨します。

各日付または時刻の入力は、テキスト文字列の形式で単一引用符 (') で囲む必要があります。 次の標準SQL構文を使用できます。

type 'value' type
説明
  • タイプはDATEまたはTIMESTAMPです。

  • 値は日付または時刻の文字列です。

  • 日付

    次の日付の入力形式がサポートされています。 各値は1999年1月8日に相当します。

    • January 8, 1999

    • 1999-01-08

    • 1999-Jan-08

    • Jan-08-1999

    • 08-Jan-1999

    • 08-Jan-99

    • Jan-08-99

    • 19990108

    • 990108

    日付値は、DATE 列または TIMESTAMP 列または変数に割り当てることができます。 時間、分、および秒のフィールドは、DATE値に時間値が付加されない場合、ゼロに設定される。

  • 時間

    次の表に、日付またはタイムスタンプのサンプル時間フィールドを示します。

    説明

    04:05:06.789

    ISO 8601

    04:05:06

    ISO 8601

    04:05

    ISO 8601

    040506

    ISO 8601

    04:05 AM

    04:05に相当する。 AMは値に影響しません。

    04:05 PM

    16:05に相当します。 時間の値は12以下でなければなりません。

    04:05:06.789-8

    ISO 8601

    04:05:06-08:00

    ISO 8601

    04:05-08:00

    ISO 8601

    040506-08

    ISO 8601

    04:05:06 PST

    タイムゾーンの省略形。

    2003-04-12 04:05:06アメリカ /New_York

    名前で宣言されたタイムゾーン。

  • Timestamp

    タイムスタンプの有効な入力は、日付と時刻で構成されます。 タイムスタンプの日付フィールドは、日付の前述の入力形式に基づいてフォーマットできます。 タイムスタンプの時間フィールドは、時間の前の入力形式に基づいてフォーマットできます。

    次の例では、Oracleのデフォルトの形式が使用されています。

    08-1月99 04:05:06

    次の例では、ISO 8601標準フォーマットが使用されます。

    1999-01-08 04:05:06

日付と時間出力

日付と時刻タイプのデフォルトの出力形式は、dd-MON-yyまたはyyyy-mm-ddです。 dd-MON-yyはOracleと互換性があり、Redwoodの日付形式と呼ばれます。 yyyy-mm-ddは、データベースプログラミングインターフェイスによって決定されるISO 8601形式です。 SQLインタラクションにJava Database Connectivity (JDBC) を使用するプログラムは、ISO 8601形式で日付を表示します。 PSQLなどの他のプログラムは、日付をRedwood形式で表示します。

次の表に、RedwoodおよびISO 8601形式の出力の例を示します。

Format

Redwood 方式

31-DEC-05 07:37:16

ISO 8601/SQL 標準

1997-12-17 07:37:16

内部フォーマット

PolarDBは、Julianの日付を使用してすべての日付と時刻の値を計算します。 毎年365.2425日があると仮定します。 この場合、ジュリアンの日付を使用して、紀元前4713年以降の日付を正しく予測および計算できます。