2017-02-11 49 views
0

我正在使用共享主機的GoDaddy web服務器。我有一個mysql數據庫,其中有2列包含數據類型日期..我正在使用以下sql查詢。從query1中,我收到來自query2的過期記錄&獲取正在進行的記錄。問題是因爲網絡服務器使用它的本地時間,所以每印度時區我沒有得到準確的記錄。有沒有辦法解決查詢中的問題。按照IST區域從mysql表中獲取數據

查詢1

SELECT * FROM報價WHERE的startDate < = CURRENT_DATE日期和結束日期< = CURRENT_DATE

QUERY2

SELECT * FROM報價WHERE的startDate < = CURRENT_DATE日期和結束日期> = CURRENT_DATE

回答

0

如果你的數據庫中的值存儲在IST中,那麼下面應該可以工作。

查詢1

SELECT * FROM報價WHERE DATE_ADD(的startDate,INTERVAL -330 MINUTE)< = CURRENT_DATE AND DATE_ADD(結束日期,INTERVAL -330 MINUTE)< = CURRENT_DATE

Query2

SELECT * FROM offers WHERE DATE_ADD(startDate,INTERVAL -330 MINUTE )< = CURRENT_DATE和DATE_ADD(結束日期,間隔-330分)> = CURRENT_DATE

0

你需要轉換時區。我假設MySql默認使用UTC時間。

SELECT * FROM offers WHERE CONVERT_TZ(startDate,'UTC','Asia/Kolkata') <= CURRENT_DATE AND CONVERT_TZ(endDate,'UTC','Asia/Kolkata') <= CURRENT_DATE; 

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_convert-tz

您需要檢查時區表。

SELECT * FROM mysql.time_zone; 
SELECT * FROM mysql.time_zone_name; 

http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

MySQL使用這些表來轉換個時區。如果上面的表是空的。你必須填寫它。

shell> mysql_tzinfo_to_sql /usr/share/zoneinfo 

更多的信息在這裏http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html

+0

這似乎是幾乎工作。但在印度當前日期是2017/02/11。所以根據以下查詢,它不應該顯示記錄結束日期小於2017/02/11,但它仍然取得2017/02/10的記錄。 SELECT * FROM offers WHERE CONVERT_TZ(startDate,'UTC','Asia/Kolkata')<= CURRENT_DATE AND CONVERT_TZ(endDate,'UTC','Asia/Kolkata')> = CURRENT_DATE – SUN

+0

什麼是價值當前日期 ? – mandar

+0

這是2017-02-10 – SUN