概要

日時フィールドの種類

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

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

各日時関連フィールドの例:

フィールドタイプ説明
日時(タイムゾーン付き)2024-08-24T07:30:00.000Z日時を UTC(協定世界時)に統一して変換します
日時(タイムゾーンなし)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
東部標準時 (UTC+8)2024-08-24 15:30:00
東部標準時 (UTC+5)2024-08-24 12:30:00
西部標準時 (UTC-5)2024-08-24 02:30:00
英国時間 (UTC+0)2024-08-24 07:30:00
中部標準時 (UTC-6)2024-08-23 01:30:00

上記はすべて同じ時刻を表しており、タイムゾーンだけが異なります。