2012-08-01 23 views
0

好了,下面的工作正常MySql的unix_time()只用date參數

mysql> SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19'); 

但功能,如果我只給一個日期的說法,像:

mysql> SELECT UNIX_TIMESTAMP('2007-11-30'); 

後來不知怎的我得到相當於2007-11-30 18:30 GMT的時間戳。我可以以某種方式重置它,爲該特定日子的開始提供時間戳嗎?像UNIX_TIMESTAMP('2007-11-30');應給出與UNIX_TIMESTAMP相同的時間戳('2007-11-30 00:00:00');我需要根據某個日期之後發生的事件過濾掉表中的一些記錄。 謝謝

[編輯]:我不知道如何,但這似乎現在正如預期的那樣工作。截圖:2007-11:30 00:00:002007-11:30 18:30:002007-11:30

回答

0

我已經檢查了它,但我得到相同的時間戳 '2007-11-30 00:00:00' 和 '2007-11-30'

mysql> SELECT UNIX_TIMESTAMP('2007-11-30 00:00:00'); 
+---------------------------------------+ 
| UNIX_TIMESTAMP('2007-11-30 00:00:00') | 
+---------------------------------------+ 
|       1196361000 | 
+---------------------------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT UNIX_TIMESTAMP('2007-11-30'); 
+------------------------------+ 
| UNIX_TIMESTAMP('2007-11-30') | 
+------------------------------+ 
|     1196361000 | 
+------------------------------+ 

可以運行這些查詢在你的機器上並檢查時間戳值。

+0

嗨,謝謝你的迴應。我認爲這與我們系統的時區有關。你能檢查你的msyql的時區並添加到答案中。謝謝。幫助:[如何找到mysql的時區](http://stackoverflow.com/questions/2934258/how-do-i-get-the-current-time-zone-of-mysql) – roopunk 2012-08-01 18:07:55

0

我也檢查過,對我來說也是給00:00:00。在進一步的調查,我碰到這個Here

服務器解釋日期爲當前時區的值和 其轉換爲UTC在內部的價值。如第10.6節「MySQL服務器時區支持」中所述,客戶可以設置其時間 區域。

在進一步搜索時,顯然有一個變量system_time_zone,這是在服務器啓動時使用服務器計算機的時區時設置的。 See here also

對於每一個客戶端連接,如

mysql> SET time_zone = timezone; 

所以最後,你需要檢查你的system_time_zone,將其設置爲合適的值,他們可以設置自己的時區。

我希望這將很好地工作,然後....

+0

嗨。感謝您的迴應。我想是的,這與我們系統的時區有關。我在印度UTC + 5:30。 24:00〜5:30也是18:30,這是我剛剛提出的一個有趣的啓示。你可以檢查你檢查上述查詢並添加到響應中的時區嗎?謝謝 – roopunk 2012-08-01 18:12:33

+0

你的MySQL服務器是在印度還是其他地方在本地運行? – Shubhansh 2012-08-02 05:02:50

+0

你在使用什麼操作系統? – Shubhansh 2012-08-02 05:09:34

0

找到一種方法來確保,即UNIX_TIMESTAMP函數,不論什麼返回正確的時間戳和時區等

>> SELECT UNIX_TIMESTAMP(CONCAT(t.DATE,' 00:00:00')) FROM db.table_name t 

干擾這是在查詢字符串中手動追加00:00:00。