我需要帮助来编写一个查询,以获取mysql中当前月份的前几个月和日期的move_in_date信息。我尝试了几种方法但似乎没有任何效果。我表中日期列的数据类型是varchar
我尝试了这个查询,但它返回空列表
SELECT * FROM requisitions where day(Move_in_date) < 15
(请购单是我的表名,move_in_date是我的列名)
谢谢。
答案 0 :(得分:1)
尝试此查询:
SELECT *
FROM requisitions
WHERE
Move_in_date < DATE_FORMAT(NOW() ,'%Y-%m-16');
这表示包括严格低于当月16日午夜的所有日期。因此,将考虑截至当月15日的所有日子。
修改强>
由于您向我们透露您的日期以'%d-%m-%Y'
格式存储为文字,因此我们必须添加一个额外步骤,以便首先使用STR_TO_DATE
将文字字符串转换为实际日期。所以现在查询变为:
SELECT *
FROM requisitions
WHERE
STR_TO_DATE(Move_in_date, '%d-%m-%Y') < DATE_FORMAT(NOW() ,'%Y-%m-16');
一般情况下,您应避免将日期存储为文本,原因如上所示。它使得查询数据变得更加困难。
答案 1 :(得分:1)
您的查询应该是,
SELECT *
FROM requisitions
WHERE MONTH(Move_in_date) = MONTH(CURRENT_DATE())
AND DAYOFMONTH(Move_in_date) < 15
参考:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html