如何在mysql中获取当月15日之前的前几个月和日期的所有日期

时间:2017-11-21 01:35:55

标签: mysql mysql-workbench

Sql Column example

我需要帮助来编写一个查询,以获取mysql中当前月份的前几个月和日期的move_in_date信息。我尝试了几种方法但似乎没有任何效果。我表中日期列的数据类型是varchar 我尝试了这个查询,但它返回空列表
 SELECT * FROM requisitions where day(Move_in_date) < 15

(请购单是我的表名,move_in_date是我的列名)

谢谢。

2 个答案:

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