2011-11-28 64 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中的值。

要存儲當前的偏移量,您需要將其添加到您自己的某個列中。

相關問題