2011-11-28 63 views
5

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

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

感谢和问候。

+0

简短回答是否,我想。有计划在未来版本的MariaDB(一个MySQL分支)中添加这样的数据类型,但没有计划。 –

+0

MariaDB 5.6计划:http://kb.askmonty.org/en/plans-for-56 –

回答

2

不,您需要将数据拆分为2列,一个是日期时间,另一个保存时区信息。但是你放在后面的字段取决于你存储在Oracle中的东西 - TIMESTAMP WITH TIME ZONE数据类型可以包含TZ偏移量和(可选)时区区域。显然,后者是要求日期时间在语义上是正确的,但IIRC Oracle不会强制执行这些数据。

,而不诉诸一些MySQL的功能

由于MySQL没有数据类型,这将是非常难写MySQL的函数来处理它 - 这是很多简单的创建一个MySQL兼容在Oracle中支持数据类型的表示。你只需要计算出你实际得到的数据,并决定你想如何在MySQL中表示它。按照约定,这意味着将它与TZ一起存储在一个单独的列中,然后使用convert_tz函数(始终从UTC)将其转换为选项。

1

MySQL总是存储timestamps as utc。日期始终存储在没有时区信息的情况下。

您可以将mysql配置为从now()返回不同的timezones中的值。

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

相关问题