2011-06-04 41 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

相关问题