MySQL是否等同于Oracle的时间戳与时区?



MySQL是否等同于Oracle的TIMESTAMP WITH TIME ZONE?

我需要映射一个Oracle表,其中有一些列与该数据类型,到一个MySQL表,但我似乎找不到一个简单的方法来做到这一点,而不诉诸一些MySQL函数。

谢谢你的好意。

不,您需要将数据分成2列,一列是日期时间,另一列保存时区信息。但是后一个字段的内容取决于Oracle中存储的内容—TIMESTAMP WITH TIME ZONE数据类型可以包含TZ偏移量和(可选的)时区区域。显然,后者是日期时间语义正确的要求,但IIRC Oracle不强制填充此数据。

不使用MySQL函数

因为MySQL没有数据类型,所以写MySQL函数来处理它是非常困难的——在支持数据类型的Oracle中创建一个MySQL兼容的表示要简单得多。您只需要计算出您实际拥有的数据并决定如何在MySQL中表示它。按照惯例,这意味着在UTC中将其与TZ一起存储在单独的列中,然后在选择时使用convert_tz函数(总是来自UTC)将其转换为

MySQL始终将时间戳存储为utc。日期总是不带时区信息存储的。

你可以配置mysql从now()返回不同时区的值

要存储当前偏移量,您需要将其添加到您自己的某个列

相关内容

  • 没有找到相关文章

最新更新