如何在SQL中查找日期范围内的数据记录?

现在想想,前年做项目的时候,我挖了一个很大的坑。
我当时负责的系统需要根据订单日期查找一定时间内的订单数据,并且使用的是BETWEEN运算符。
当时觉得挺简单的,就觉得不会有问题,就随便写了 SELECT FROM order WHERE order date BETWEEN '2 02 1 -05 -01 ' AND '2 02 1 -05 -3 1 '。

结果反馈回来后,我们发现数据不准确。
有些订单显然是在五月份下的,但尚未被发现。
一开始我很困惑,但仔细检查后,我意识到数据库中的订单日期字段是 DATE 类型,而我编写的查询中的日期格式是“2 02 1 -05 -01 ”。
结果,数据库中存储的日期格式为“2 02 1 /05 /01 ”。
由于格式不匹配,查询结果会有所不同。

这件事给我敲响了警钟。
以后进行任何数据库操作时,首先应该检查字段的数据类型和格式。
别像我当年那样放松警惕。
后来我通过快速更改格式并重新运行查询解决了该问题。

哦,但是我查2 02 1 年5 月1 日到5 月3 1 日的订单数据时,发现少了很多。
幸亏发现及时,不然我还以为系统有bug呢。
现在回想起来,我还是有点后怕。
😨

订单列表查询SQL,查询出订单的数量和订单详细信息(包括订单中的所有商品)。

这是标准 SQL 多表连接查询。

直接看你的写法:连接order_tm和order_good_td两个表。
使用m.订单号=d.订单号进行条件过滤。

说白了,你是在检查每笔订单的数量、总金额、产品名称、单价。
但请注意,一个订单在 order_good_td 表中可能有多个产品记录。

例如,我们上周刚刚处理了一个项目。
客户想要这种结构,但必须确认order_good_td表中的订单号对应于多项产品数据。
怎么处理呢。