在我的数据库中,我有表“ leads”和列“ datum_event”(varchar)。我需要在“从”到“到” datum_event之间获取行。例如,从30.11.2018到31.03.2019。我使用str_to_date将varchar转换为要比较的日期。
我的SQL:
SELECT DISTINCT(l.lead_id)
FROM leads as l
WHERE STR_TO_DATE(datum_event,'%d.%m.%y') >= STR_TO_DATE('30.11.2018','%d.%m.%y')
AND STR_TO_DATE(datum_event,'%d.%m.%y') <= STR_TO_DATE('31.03.2019','%d.%m.%y')
ORDER BY l.lead_id desc
但是现在我得到的结果是空的。这是错误的。有datum_event '01 .12.2018'的行,但我在结果中看不到它。
如果比较日期在一年中,例如从01.01.2019到31.03.2019,我可以看到结果,但是如果我从2018年12月31日开始比较,我看不到任何结果。
请帮助我,我该如何解决?谢谢。
答案 0 :(得分:0)
您也许可以使用SQL BETWEEN
条件。
SELECT DISTINCT(l.lead_id)
FROM leads as l
WHERE (STR_TO_DATE(datum_event,'%d.%m.%y') BETWEEN
STR_TO_DATE('30.11.2018','%d.%m.%y') AND STR_TO_DATE('31.03.2019','%d.%m.%y'))
ORDER BY l.lead_id desc`
答案 1 :(得分:0)
select STR_TO_DATE('30.11.2018','%d.%m.%y')
将返回2020-11-30
但是您需要2018-11-30
这个日期,因此您必须进行如下更改
格式
select STR_TO_DATE('30.11.2018','%d.%m.%Y') this will `2018-11-30`
我已将日期格式添加为演示link
因此在查询中,您需要更正格式
SELECT l.lead_id
FROM leads as l
WHERE STR_TO_DATE(datum_event,'%d.%m.%Y') >= STR_TO_DATE('30.11.2018','%d.%m.%Y')
AND STR_TO_DATE(datum_event,'%d.%m.%Y') <= STR_TO_DATE('31.03.2019','%d.%m.%Y')
ORDER BY l.lead_id desc