2011-06-04 46 views
2

我想使用具有特定時區的NOW()函數,例如對於用戶爲GMT + 8,對另一個用戶爲GMT-2。我怎樣才能做到這一點?mySQL TIME函數和時區

我猜測NOW()的時間與SQL服務器的時區和時間有一定的關係,但我希望FN(GMT + 8)始終給我GMT + 8的NOW(),無論如何SQL服務器所在的時區。

小問題:我如何顯示/瞭解SQL服務器的當前時間?

回答

5

NOW()函數提供服務器本地時區中的當前時間。如果你想轉換到不同的時區,你可以使用CONVERT_TZ()


UPDATE

可以使用每個連接的時區(不影響系統時區),並得到你想要的效果:

mysql> select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2011-06-03 22:40:51 | 
+---------------------+ 
1 row in set (0.00 sec) 

mysql> SET time_zone = '+08:00'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> select now(); 
+---------------------+ 
| now()    | 
+---------------------+ 
| 2011-06-04 10:41:15 | 
+---------------------+ 
1 row in set (0.00 sec) 
+1

良好的通話...通常我這樣做,但我今晚分心了這個閃亮的新MacBook Pro:p謝謝! – 2011-06-04 03:21:30

+0

謝謝!使用CONVERT_TZ(),我需要知道CONVERT_TZ()的第二個參數的服務器的時區,還是有辦法將第二個參數設置爲服務器的時區? – Nyxynyx 2011-06-04 03:34:01

+1

因此,如果您想使用'CONVERT_TZ()'將FROM服務器時間(+08:00)轉換爲其他時間(例如美國東部),則用法爲:'SELECT CONVERT_TZ(NOW(),@@ session.time_zone ,' - 04:00')' – 2011-06-04 03:44:17