MySQL是否等同于Oracle的TIMESTAMP WITH TIME ZONE?
我需要将一个具有该数据类型的列的Oracle表映射到MySQL表中,但是我似乎无法找到一种简单的方法来执行此操作而不需要使用某些MySQL函数。
谢谢和最诚挚的问候。
答案 0 :(得分:2)
不,您需要将数据拆分为2列,一列是日期时间,另一列是时区信息。但是您在后一个字段中放置的内容取决于您在Oracle中存储的内容 - TIMESTAMP WITH TIME ZONE数据类型可以包含TZ偏移量和(可选)时区区域。显然后者要求日期时间在语义上是正确的,但是IIRC Oracle不会强制填充这些数据。
不使用某些MySQL函数
由于MySQL没有数据类型,因此编写MySQL函数来处理它是非常困难的 - 在支持数据类型的Oracle中创建MySQL兼容表示要简单得多。您只需要计算出您实际获得的数据,并决定如何在MySQL中表示它。按惯例,这意味着将它与TZ一起存储在一个单独的列中,然后在选择时使用convert_tz函数进行转换(始终来自UTC)
答案 1 :(得分:1)
MySQL始终存储timestamps as utc。日期始终存储时没有时区信息。
您可以将mysql配置为从now()返回不同timezones中的值。
要存储当前偏移量,您需要将其添加到某些列中。