2015-10-22 81 views
1

我爲我的應用程序使用mysql,並且應用程序是營業時間驅動的。MySQL UTC到當地時區

現在在我的系統的時間

下午8點53。 (EST)

select now(); -> returns 2015-10-21 20:52:48 

select utc_timestamp(); -> returns 2015-10-22 00:53:50 

我想時間到用戶時區特定的時間轉換。

因此,使用下面的查詢來轉換爲用戶特定的時區。

select CONVERT_TZ(utc_timestamp(),'+00:00','-05:00'); 

上述查詢返回

2015年10月21日19時55分49秒

它認爲夏令時。但是,我希望能夠在我的系統中返回當前時間> 2015-10-21 20:55:49。

有無論如何指示convert tz查詢不考慮夏令時?

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP); 

上述查詢返回

-04:00:00

我預計這將返回-05:00,因爲我的EST。

謝謝

回答

2

其實,你有它倒退。當您指定-05:00時,即考慮夏令時,即而不是。它不能,因爲你只提供了一個偏移量。

之後,你說你預計它會返回-05:00,但是如果你在美國東部時間,那麼目前(直到2015年11月1日)夏令時是有效的。你在EDT,這是-04:00

因此SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);給出了正確的結果。如果你想CONVERT_TZ給出正確的結果,那麼你可以這樣做:

select CONVERT_TZ(utc_timestamp(),'+00:00','SYSTEM'); 

傳遞SYSTEM使用系統的本地時區,這是你問什麼。但是,使用名爲時區的通常更好,比如America/New_York。要使用這些,請確保您的MySQL安裝已正確設置爲time zone support