如果這會產生null,則TZ表尚未建立:
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
如果沒有時區表設置,你可以更新用戶表中的偏移小時 然後要這麼做:
select utc_timezone() - interval user_timezone_offset_in_hours hour
from userinfo a
where user_id = 999;
呦但是,我仍然需要一種方法來更新用戶的時區。
如果你正在爲一個web應用程序編寫這個程序,你可以通過javascript獲取時區,這裏是一個article,它描述瞭如何(沒有嘗試過,但它看起來會工作)。
相對於「間隔」上面的解釋的位...
一個在MySQL越特技構建體是利用INTERVAL
關鍵字的,作爲示例的(數字值可以是最佳地示出表達式或字段值)
select now() today, now() - interval 1 day yesterday;
+---------------------+---------------------+
| today | yesterday |
+---------------------+---------------------+
| 2011-05-26 13:20:55 | 2011-05-25 13:20:55 |
+---------------------+---------------------+
您可以添加他們,反正你喜歡減去他們,這就是爲什麼我從來沒有 的日期/時間理會加/減/轉換功能,
select now() a, now() - interval 1 day + interval 4 hour + interval 8 minute b;
+---------------------+---------------------+
| a | b |
+---------------------+---------------------+
| 2011-05-26 13:24:16 | 2011-05-25 17:32:16 |
+---------------------+---------------------+
您可以使用負數(應該是不錯的負時區偏移) 這些是相同的:
select now() - interval 1 month a, now() + interval -1 month b;
+---------------------+---------------------+
| a | b |
+---------------------+---------------------+
| 2011-04-26 13:38:05 | 2011-04-26 13:38:05 |
+---------------------+---------------------+
它給我的「錯誤1046(3d000):沒有選擇數據庫」 – 2012-08-02 05:12:18
您需要將輸出管道輸出爲字面意義上的「mysql -uroot mysql」 - mysql是二進制可執行文件,第二個mysql是數據庫名稱。 – philwinkle 2013-01-15 00:13:14
或者'使用mysql;'首先在所有命令上使用這個db。或者直接:'SELECT * FROM mysql.time_zone;' – Razor 2015-07-30 08:00:14