MySql 日期范围查询未显示所有记录

我现在正在处理 mysql 查询。我从2018年3月到2019年3月的fetch数据写了一个查询,今年有5000多条记录。我写了一个日期范围从 2018 年 3 月到 2019 年 3 月的查询,但它只显示了 150 条记录


还有一件事。数据库中的日期列是 varchar。


这是我创建的查询


SELECT a.*,b.

FROM OrderCalculation a

RIGHT JOIN crm_order b

   ON a.orderid = b.orderno

WHERE

    str_to_date(b.Date,'%Y-%m-%d') >= str_to_date(concat(YEAR(CURDATE()),'-08-01'),'%Y-%m-%d')-INTERVAL 1 YEAR AND

    str_to_date(b.Date,'%Y-%m-%d') <= str_to_date(CONCAT(YEAR(CURDATE()),'-08-01'),'%Y-%m-%d')



梵蒂冈之花
浏览 260回答 1
1回答

呼啦一阵风

您不应该将日期存储为文本。话虽如此,您当前的调用STR_TO_DATE是不正确的,因为您的日期格式是dd-mm-YYYY,而不是YYYY-mm-dd。尝试以下查询:SELECT a.*, b.*FROM crm_order aLEFT JOIN OrderCalculation b&nbsp; &nbsp; ON a.orderid = b.ordernoWHERE&nbsp; &nbsp; STR_TO_DATE(b.Date, '%d-%m-%Y') >= '2018-03-01' AND&nbsp; &nbsp; STR_TO_DATE(b.Date, '%d-%m-%Y') < '2019-04-01';相反,如果您想要在当前月份的第一天之前过去一年的所有数据,请尝试:SELECT a.*, b.*FROM crm_order aLEFT JOIN OrderCalculation b&nbsp; &nbsp; ON a.orderid = b.ordernoWHERE&nbsp; &nbsp; STR_TO_DATE(b.Date, '%d-%m-%Y') >= DATE_FORMAT(NOW() ,'%Y-%m-01') - INTERVAL 1 YEAR AND&nbsp; &nbsp; STR_TO_DATE(b.Date, '%d-%m-%Y') < DATE_FORMAT(NOW() ,'%Y-%m-01');
打开App,查看更多内容
随时随地看视频慕课网APP