MySQL Now()在两个日期时间时区之间

时间:2018-06-16 18:21:47

标签: php mysql sql

我有coupons的表格。 每张优惠券都有start date time and end date time。 我的时区是+30:00

在晚上9:16 (根据我的日期类型21:16),我运行此查询;

SELECT * FROM coupons WHERE NOW() BETWEEN coupon_date_start AND coupon_date_end

我得到了这个结果;

enter image description here

底部的结果应该过期而不会出现。那个项目的结束时间是09:14 PM,我在晚上9:16运行。

任何想法我该如何解决这个问题? (我还为该表设置了我的时区)

我的表架构; enter image description here

我通过在mysql中将我的时区设置为+3 UTC进行修复,并且还将日期时间更改为列的时间戳。

2 个答案:

答案 0 :(得分:1)

确保您的MySQL时区,您可以使用CONVERT_TZ功能

SELECT * 
FROM coupons 
WHERE CONVERT_TZ(NOW(),'+00:00','+03:00') BETWEEN coupon_date_start AND coupon_date_end

CONVERT_TZ

sqlfiddle:http://sqlfiddle.com/#!9/d0578e/1

答案 1 :(得分:0)

SELECT * 
FROM coupons 
WHERE CONVERT_TZ(NOW(),'+00:00','+03:00') BETWEEN coupon_date_start AND coupon_date_end
CONVERT_TZ

sqlfiddle:http://sqlfiddle.com/#!9/d0578e/1