如何使用mysql正确获取日期列当前日期的所有数据库
Posted
技术标签:
【中文标题】如何使用mysql正确获取日期列当前日期的所有数据库【英文标题】:How to properly get all the data base on date column current date using mysql 【发布时间】:2019-06-09 23:44:31 【问题描述】:我不认为这是一个错误,为什么我无法获取当前日期的所有数据库。我在我的表列 order_date 上有客户当天的订单。但是我无法根据我的脚本获取数据,但是在我所做的脚本上是 DATE(order_date)=CURDATE()
这是客户今天的订单日期:
这是我的脚本:
SELECT op.order_id,op.customer_id,customer_name,customer_number,op.or_number,delivery_status,
order_ship_address,delivery_status,order_date,amount,driver_firstname,transaction_number
FROM order_properties as op
LEFT JOIN (SELECT customer_id,order_id,amount,subtotal FROM payment) p
ON op.order_id = p.order_id
LEFT JOIN (SELECT customer_id,customer_name,customer_location,customer_number FROM customer_details)
cd ON op.customer_id = cd.customer_id LEFT JOIN (SELECT driver_id,driver_firstname FROM driver) drive
ON op.driver_id = drive.driver_id WHERE DATE(order_date)=CURDATE()
如你们所见,我没有得到任何数据,但 order_date 是今天。
参考:
【问题讨论】:
您确定日期比较是问题所在吗?我认为这部分代码不会失败。 我无法从中获取任何数据 我建议您编写一个更简单的查询来查看是否获得了您正在寻找的 order_dates,如果您找到它们,则开始重新添加连接以查看查询失败的位置。或者您可以提供示例数据(请提供文本)。顺便说一句,我有部分色盲,无法阅读提供的参考信息。 @P.Salmon 对不起图片,我忘了.. SELECT CURDATE() 的输出是什么?? 【参考方案1】:我猜您遇到了时区问题。当我读到这里时,当前日期是 2019 年 6 月 9 日,而不是 2019 年 6 月 10 日(在大多数其他有人居住的世界中都是如此)。
这可能解释了结果的差异。
我还建议您将逻辑编写为:
order_date >= CURDATE() and
order_date < CURDATE() + interval 1 day
这与时区问题无关,但确实允许使用索引。
【讨论】:
它可能会猜测时区问题,因为客户在加拿大的时间和日期是 09/06/2019,然后在我们国家是 10/06/2019以上是关于如何使用mysql正确获取日期列当前日期的所有数据库的主要内容,如果未能解决你的问题,请参考以下文章