我现在正在处理 mysql 查询。我从2018年3月到2019年3月的fetch数据写了一个查询,今年有5000多条记录。我写了一个日期范围从 2018 年 3 月到 2019 年 3 月的查询,但它只显示了 150 条记录还有一件事。数据库中的日期列是 varchar。这是我创建的查询SELECT a.*,b.FROM OrderCalculation aRIGHT JOIN crm_order b ON a.orderid = b.ordernoWHERE 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')
1 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
您不应该将日期存储为文本。话虽如此,您当前的调用STR_TO_DATE是不正确的,因为您的日期格式是dd-mm-YYYY,而不是YYYY-mm-dd。尝试以下查询:
SELECT a.*, b.*
FROM crm_order a
LEFT JOIN OrderCalculation b
ON a.orderid = b.orderno
WHERE
STR_TO_DATE(b.Date, '%d-%m-%Y') >= '2018-03-01' AND
STR_TO_DATE(b.Date, '%d-%m-%Y') < '2019-04-01';
相反,如果您想要在当前月份的第一天之前过去一年的所有数据,请尝试:
SELECT a.*, b.*
FROM crm_order a
LEFT JOIN OrderCalculation b
ON a.orderid = b.orderno
WHERE
STR_TO_DATE(b.Date, '%d-%m-%Y') >= DATE_FORMAT(NOW() ,'%Y-%m-01') - INTERVAL 1 YEAR AND
STR_TO_DATE(b.Date, '%d-%m-%Y') < DATE_FORMAT(NOW() ,'%Y-%m-01');
- 1 回答
- 0 关注
- 259 浏览
添加回答
举报
0/150
提交
取消