首页 > 解决方案 > MySQL Now() 在两个日期时间时区之间

问题描述

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

在晚上 09:16(根据我的日期类型是 21:16),我运行了这个查询;

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

我得到了这个结果;

在此处输入图像描述

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

知道如何解决这个问题吗?(我还为该表设置了我的时区)

我的表模式; 在此处输入图像描述

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

标签: phpmysqlsql

解决方案


确保你的 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


推荐阅读