Tip

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

日付時刻フィールドタイプ

日付時刻フィールドタイプ

日付時刻フィールドタイプには、以下の種類があります。

  • 日付時刻(タイムゾーンあり) - 日付時刻はすべてUTC(協定世界時)に変換され、必要に応じてタイムゾーンの調整が行われます。
  • 日付時刻(タイムゾーンなし) - タイムゾーン情報を含まない日付と時刻を保存します。
  • 日付(時刻なし) - 日付情報のみを保存し、時刻部分は含みません。
  • 時刻 - 時刻情報のみを保存し、日付部分は含みません。
  • Unix タイムスタンプ - Unixタイムスタンプとして保存されます。通常、1970年1月1日からの経過秒数を表します。

各日付時刻関連フィールドタイプの例を以下に示します。

フィールドタイプ説明
日付時刻(タイムゾーンあり)2024-08-24T07:30:00.000ZUTC(協定世界時)に変換され、タイムゾーンの調整が可能です
日付時刻(タイムゾーンなし)2024-08-24 15:30:00タイムゾーンを考慮せず、日付と時刻のみを記録します
日付(時刻なし)2024-08-24日付情報のみを保存し、時刻は含みません
時刻15:30:00時刻情報のみを保存し、日付は含みません
Unix タイムスタンプ1724437800UTC 1970年1月1日00:00:00からの経過秒数を表します

各データソースの比較

NocoBase、MySQL、およびPostgreSQLの対応表を以下に示します。

フィールドタイプNocoBaseMySQLPostgreSQL
日付時刻(タイムゾーンあり)Datetime with timezoneTIMESTAMP
DATETIME
TIMESTAMP WITH TIME ZONE
日付時刻(タイムゾーンなし)Datetime without timezoneDATETIMETIMESTAMP WITHOUT TIME ZONE
日付(時刻なし)DateDATEDATE
時刻TimeTIMETIME WITHOUT TIME ZONE
Unix タイムスタンプUnix timestampINTEGER
BIGINT
INTEGER
BIGINT
時刻(タイムゾーンあり)--TIME WITH TIME ZONE

備考:

  • MySQLのTIMESTAMP型は、UTC 1970-01-01 00:00:01から2038-01-19 03:14:07までの範囲をカバーします。この範囲を超える日付や時刻を扱う場合は、DATETIMEまたはBIGINTを使用してUnixタイムスタンプを保存することをお勧めします。

日付時刻の保存処理フロー

タイムゾーンあり

これには日付時刻(タイムゾーンあり)Unix タイムスタンプが含まれます。

20240824191933

備考:

  • より広範な日付範囲をサポートするため、NocoBaseの日付時刻(タイムゾーンあり)フィールドでは、MySQLデータベースでDATETIME型を使用しています。保存される日付値は、サーバーのTZ環境変数に基づいて変換された値です。そのため、TZ環境変数が変更されると、保存されている日付時刻の値も変化します。
  • UTCとローカルタイムにはタイムゾーンの差があるため、UTCの生の値(オリジナル値)を直接表示すると、ユーザーが誤解する可能性があります。

タイムゾーンなし

20240824185600

UTC

UTC(協定世界時、Coordinated Universal Time)は、世界中の時間を調整・同期するために使用されるグローバルな時間標準です。原子時計に基づいた高精度な時間標準であり、地球の自転と同期しています。

UTCとローカルタイムにはタイムゾーンの差があるため、UTCの生の値(オリジナル値)を直接表示すると、ユーザーが誤解を招く可能性があります。例えば、以下のようになります。

タイムゾーン日付時刻
UTC2024-08-24T07:30:00.000Z
東8区 (UTC+8)2024-08-24 15:30:00
東5区 (UTC+5)2024-08-24 12:30:00
西5区 (UTC-5)2024-08-24 02:30:00
イギリス時間 (UTC+0)2024-08-24 07:30:00
中部時間 (UTC-6)2024-08-23 01:30:00

これらはすべて同じ時刻を表していますが、タイムゾーンが異なるだけです。