如果月份改变,在sql查询之间不工作

时间:2018-06-04 13:02:37

标签: sql

我正在使用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'

4 个答案:

答案 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';

请注意,我也使用了BETWEENHere是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'