根据IST区域从mysql表中获取数据

时间:2017-02-11 05:37:46

标签: mysql

我正在使用共享主机的GoDaddy网络服务器。我有一个mysql数据库,其中有2列包含数据类型日期..我正在使用以下sql查询。从query1我得到过期记录&来自query2获取持续记录。问题是因为网络服务器使用它的本地时间,所以按照印度时区我没有得到准确的记录。有没有办法解决查询中的问题。

查询1

  

SELECT * FROM提供WHERE startDate< = CURRENT_DATE AND endDate< = CURRENT_DATE

QUERY2

  

SELECT * FROM提供WHERE startDate< = CURRENT_DATE AND endDate> = CURRENT_DATE

2 个答案:

答案 0 :(得分:0)

如果您在数据库中的值存储在IST中,那么下面应该有效。

查询1

  

SELECT * FROM提供WHERE DATE_ADD(startDate,INTERVAL -330 MINUTE)< =   CURRENT_DATE和DATE_ADD(endDate,INTERVAL -330 MINUTE)< =   CURRENT_DATE

QUERY2

  

SELECT * FROM提供WHERE DATE_ADD(startDate,INTERVAL -330 MINUTE)< = CURRENT_DATE AND DATE_ADD(endDate,INTERVAL -330 MINUTE)> =   CURRENT_DATE

答案 1 :(得分:0)

您需要转换时区。我假设MySql默认使用UTC时间。

sudo apt-get install libgsl0-dev

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

您需要检查时区表。

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.5/en/time-zone-support.html

Mysql使用这些表来转换时区。如果上面的表是空的。你必须填写它。

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

此处有更多信息http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html