我正在使用Between从两个日期之间的表中获取所有记录,如果两个日期都来自同一个月,但是如果我更改了几个月,则表明没有找到任何行
SELECT * from user_details WHERE currentdate BETWEEN '14/05/2018' AND '20/05/2018'
它将获取这些日期之间的所有行,但如果我更改月份,则表示未找到记录
SELECT * from user_details WHERE currentdate BETWEEN '30/05/2018' AND '20/06/2018'
答案 0 :(得分:1)
也许日期存储为text
?如果是,则临时解决方法是转换为DATE
数据类型。
SELECT *
from user_details
WHERE CAST(currentdate AS DATE) BETWEEN CAST('30/05/2018' AS DATE)
AND CAST('20/06/2018' AS DATE)
答案 1 :(得分:0)
您使用日期作为字符串。需要将其转换为日期,例如
SET @date := 'Jul.20 2018';
SELECT STR_TO_DATE(@date,'%M.%d %Y');
答案 2 :(得分:0)
使用标准日期格式:
SELECT *
FROM user_details
WHERE currentdate >= '2018-05-14' AND
currentdate < '2018-05-20';
请注意,我也使用了BETWEEN
。 Here是Aaron Bertrand的一篇非常好的博客文章,解释了原因。请注意,他专门讨论SQL Server,但大多数讨论都适用于任何数据库。
答案 3 :(得分:0)
您没有使用当前日期格式,您需要定义列日期格式
SELECT * from user_details WHERE str_to_date(currentdate, '%d/%m/%Y') BETWEEN '30/05/2018' AND '20/06/2018'