我应该在MySQL中使用什么数据类型来存储XSD格式的日期时间?

时间:2012-11-02 19:50:22

标签: php mysql datetime datetime-format type-conversion

我一直在考虑我一直在考虑的这两个选项:

选项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都有很多日期/时间函数。

在这种情况下使用的最佳数据类型和读/写方法是什么?

1 个答案:

答案 0 :(得分:2)

这取决于您需要对该列进行的操作,以及您要了解的内容。

例如,如果您必须操纵查询中的值,那么DATETIME看起来不错,但是如果您需要将其输出回XSD,那么时区中的信息是否相关?即使您使用CONVERT_TZ()正确阅读,日期时间列也会丢失该信息。

因此,如果您需要“时间点”,请转换为UTC并将其存储为日期时间。如果您还需要以相同方式重新生成它,请将TZ存储在辅助列中。

如果您对这些信息一无所知,请将其保留为VARCHAR - 您仍然可以改变想法。 “仅限日期时间列”是您无法离开的唯一选择。