2010-06-03 39 views
0

可能重複:
Add 2 hours to current time in MySQL?SQL時間問題 - 需要它6小時向前

我的服務器目前是基於美國東部時間,因爲我在英國,我需要將此推進6小時。

當使用在MySQL NOW(),我得到了錯誤的時間,有什麼我可以添加到NOW()把它向前調6個小時? 感謝

+3

這種取決於你的應用程序,但在許多情況下,它是存儲在UTC任何時候,做時區轉換的UI是個好主意。這樣你就不必擔心服務器的時區等等。 – 2010-06-03 13:55:49

+0

++ Matti。如果您使用當地時間,他們會在您入場/離場時節省一小時的時間全部關閉。相信我,這很糟糕。使用UTC。 – DougN 2010-06-03 13:57:17

+0

哇!小心! 只需增加6個小時就不會在一般情況下工作,因爲在美國我們有夏令時。小時偏移不總是6小時。有時候是五點。所以你需要一個能夠基於時區轉換時間的函數。 – 2010-06-03 13:58:06

回答

1

您想使用的功能DateAdd

例子:

SELECT DATEADD(hour, 6, GetDate()) 
+0

它是MySQL,而不是MSSQL。 – Guffa 2010-06-03 14:00:46

+0

希望MySQL – Darknight 2010-06-03 14:01:46

1

參考this

SELECT ADDTIME(now(), '06:00:00') 

看到這裏DIFFERNCE

SELECT ADDTIME(now(), '06:00:00') as EAST_TIME , now() as UK_TIME 
0

每個連接時區。每個連接的客戶端都有自己的時區設置,由會話time_zone變量給出。最初,會話變量從全局time_zone變量中獲取其值,但客戶端可以使用以下語句更改其自己的時區:

mysql> SET time_zone = timezone;

該值可以是一個字符串,表示與UTC的偏移量,如'+10:00'或'-6:00'。

1

是的,你可以使用date_add功能:

date_add(now(), interval 6 hour) 

您還可以使用adddate這是date_add的別名。

請考慮將時間存儲爲數據庫中的UTC,並在顯示時將其轉換爲本地時間。

如果轉換是從一個時區轉換到另一個時區而不是設定的小時數,則可以使用convert_tz函數。例如:

convert_tz(now(), '-6:00', '0:00') 

或:

convert_tz(now(), 'US/Eastern', 'MET') 
+0

中有一個等價的函數+1:OP需要使用CONVERT_TZ,並瞭解mysql實例正在使用什麼時區... – 2010-06-03 22:53:02