2017-02-11 46 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