我一直在考虑我一直在考虑的这两个选项:
选项A:使用DATETIME
字段并在从字段中提取后将其转换为xsd格式
选项B:使用VARCHAR
字段并将其转换为xsd格式,然后再将其插入字段
也许这两个选项同样有效,但也许我还没有考虑过选项C.
如果它有所不同,它是我正在制作的表的要求。该字段的数据定义如下:
A date in xsd:dateTime format: [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm]
示例:2001-10-26T21:32:52
我将使用php来阅读和阅读从这个数据库写,我知道mysql和php都有很多日期/时间函数。
在这种情况下使用的最佳数据类型和读/写方法是什么?
答案 0 :(得分:2)
这取决于您需要对该列进行的操作,以及您要了解的内容。
例如,如果您必须操纵查询中的值,那么DATETIME
看起来不错,但是如果您需要将其输出回XSD,那么时区中的信息是否相关?即使您使用CONVERT_TZ()
正确阅读,日期时间列也会丢失该信息。
因此,如果您需要“时间点”,请转换为UTC并将其存储为日期时间。如果您还需要以相同方式重新生成它,请将TZ存储在辅助列中。
如果您对这些信息一无所知,请将其保留为VARCHAR
- 您仍然可以改变想法。 “仅限日期时间列”是您无法离开的唯一选择。