免责声明:我完全清楚表示日期/时间的最佳方式是 Unix 时间戳或 PHP 的DateTime
类和 Oracle 的DATE
数据类型。
有了这个,我想知道最适合存储时间数据的数据类型是什么(在 PHP 和 Oracle 中)。我对存储日期组件不感兴趣;只有时间。
例如,假设我有一个employee
实体,我想为其存储他/她的典型工作时间表。该员工可能在上午 8:00 至下午 5:00 工作。这些时间没有日期组件,那么应该使用什么来存储和表示它们呢?
我考虑过的选项:
- 作为字符串,具有标准格式(可能是 24 小时 HH:MM:SS+Z)。
- 作为 0 <= n < 24 范围内的数字,小数部分表示分钟/秒(无法存储时区信息?)。
- 作为具有规范化/未使用日期组件的 PHP
DateTime
和 OracleDATE
,例如0001-01-01
. - 与上面相同,仅使用 Unix 时间戳(PHP
integer
和 OracleTIMESTAMP
)。
目前我正在使用上面的#3,但我似乎在滥用这些数据类型,这让我有点恼火。然而,据我所知,它提供了最好的可用性。比较和排序在 PHP 和 Unix 中都按预期工作,可以维护时区数据,并且显示数据实际上不需要任何特殊操作。
我忽略了什么,还是有更合适的方法?