如何使用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正确获取日期列当前日期的所有数据库的主要内容,如果未能解决你的问题,请参考以下文章

根据当前日期获取前 3 个月的数据 - MySQL

Teradata中“日期”数据类型列的最近30天

mysql 怎么获取前一个月的日期和前一年的日期

如何从 iOS swift 中的日期获取 1 小时前?

获取VARCHAR中的日期之间的数据(Mysql和node.js)

MySQL:即使没有日期行,有没有办法获取两个日期之间所有日期的数据?