[英]mysql CONVERT_TZ inconsistent behavior
以下行為使我感到困惑。 我的mysql服務器安裝在具有EEST時區的PC上。 我想將mysql中的datetime轉換為UTC日期。
執行時
select CONVERT_TZ('1970-01-01 02:00:01', 'SYSTEM', '+00:00')
響應為:“ 1970-01-01 00:00:01”
同樣,執行時
select CONVERT_TZ('1970-01-01 04:00:00', 'SYSTEM', '+00:00')
響應為:“ 1970-01-01 02:00:00”
但是,當我基本上想要0 Unix時間時,可以執行以下命令:
select CONVERT_TZ('1970-01-01 02:00:00', 'SYSTEM', '+00:00')
響應再次是:“ 1970-01-01 02:00:00”
這是為什么? 難道我做錯了什么? 如何獲取正確的值“ 1970-01-01 00:00:00”?
我認為這里的問題是,在CONVERT_TZ
中進行的調整將導致在UNIX紀元開始之前或之前的時間戳記被忽略,並且將返回原始輸入時間戳記。 考慮以下三個查詢:
SELECT CONVERT_TZ('1970-01-01 01:00:01', 'SYSTEM', '+00:00');
-- '1970-01-01 00:00:01'
SELECT CONVERT_TZ('1970-01-01 01:00:00', 'SYSTEM', '+00:00');
-- '1970-01-01 01:00:00'
SELECT CONVERT_TZ('1970-01-01 00:30:00', 'SYSTEM', '+00:00');
-- '1970-01-01 00:30:00'
只有第一個查詢會調整時間戳; 后兩個僅返回輸入。
從上面@Thomas給出的出色評論中,我從MySQL 文檔中獲取了CONVERT_TZ
的以下內容:
從from_tz轉換為UTC時,如果該值超出TIMESTAMP類型的支持范圍,則不會進行轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.