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()返回不同时区的值
要存储当前偏移量,您需要将其添加到您自己的某个列