概述

日期时间字段类型

日期时间字段类型包括以下几种:

  • 日期时间(含时区) - 日期时间会统一转换为 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 时间戳1724437800从 UTC 时间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

以上表示的都是一个时间,只是时区有所区别。