DATE、DATETIME、TIMESTAMP型は関連しています。このセクションでは、それぞれの特徴、類似点、および相違点について説明します。
DATE
DATE型は、日付部分はあるが時刻部分がない値を表すために使用されます。
DATE値の検索および表示形式は'YYYY-MM-DD'で、範囲は'0000-00-00'から'9999-12-31'です。
OceanBaseデータベースでは、文字列または数値を使用してDATE列に値を代入できます。
構文は以下のとおりです:
DATE
DATETIME
DATETIME型は、日付と時刻の両方の部分を含む値を表すために使用されます。
DATETIME値の検索および表示形式は'YYYY-MM-DD hh:mm:ss'で、範囲は'0000-00-00 00:00:00'から'9999-12-31 23:59:59'です。
構文は以下のとおりです:
DATETIME[(fsp)]
オプションのfsp値は、秒の小数部の精度を指定するために使用され、範囲は[0,6]です。0値は小数部分がないことを意味します。省略した場合、デフォルトの精度は0です。
DATETIME列は、DEFAULTおよびON UPDATE句を使用して、現在の日付と時刻の自動初期化と更新を指定できます。
DATETIME値には秒の小数部を含めることができ、精度はマイクロ秒(6桁)まで達成可能で、形式は'YYYY-MM-DD hh:mm:ss[.fraction]'、範囲は'0000-00-00 00:00:00.000000'から'9999-12-31 23:59:59.999999'です。小数部分は常に他の時間桁と小数点で区切られなければならず、他の区切り文字は認識されません。
TIMESTAMP
TIMESTAMPデータ型は、日付と時刻の両方の部分を含む値を表すために使用されます。
構文は以下のとおりです:
TIMESTAMP[(fsp)]
オプションのfsp値は、秒の小数部の精度を指定するために使用され、範囲は[0,6]です。0値は小数部分がないことを意味します。省略した場合、デフォルトの精度は0です。
例:
CREATE TABLE t(C1 TIMESTAMP(6));
TIMESTAMP列は、DEFAULT CURRENT_TIMESTAMPおよびON UPDATE CURRENT_TIMESTAMP句を使用して、現在の日付と時刻の自動初期化と更新を指定できます。デフォルトでは、最初のTIMESTAMP列にこれらの属性がありますが、テーブル内の他のTIMESTAMP列にも定義できます。
TIMESTAMP値には秒の小数部を含めることができ、精度はマイクロ秒(6桁)まで達成可能で、形式は'YYYY-MM-DD hh:mm:ss[.fraction]'、範囲は'0000-00-00 00:00:00.000000'から'9999-12-31 23:59:59.999999'です。小数部分は常に他の時間桁と小数点で区切られなければならず、他の区切り文字は認識されません。
OceanBaseデータベースは、TIMESTAMP値を現在のタイムゾーンからUTCに変換して保存し、検索時にはUTCから現在のタイムゾーンに戻して変換します。デフォルトでは、各接続の現在のタイムゾーンはサーバーの時刻に従いますが、各接続のタイムゾーンを変更することもできます。双方向の変換で同じタイムゾーンを使用しない場合、タイムゾーンを変更した後に検索した値は保存された値と異なる可能性があります。タイムゾーン設定が変わらない限り、保存された値を検索できます。現在のタイムゾーンはtime_zoneシステム変数の値として使用できます。