具有特定日期格式的MySQL日期间隔

时间:2014-12-24 09:17:57

标签: mysql

我有日期列字段,它的数据看起来像2014-05。我如何获得前6个月的间隔。我在下面的mysql查询

SELECT name,grade from users where data_year  BETWEEN  DATE_FORMAT('2014-04', '%Y-%m') -  INTERVAL 12 MONTH AND DATE_FORMAT('2014-04', '%Y-%m')

我在2014-04-31这样的日子里得到了结果

1 个答案:

答案 0 :(得分:1)

您使用的字符串不是有效日期,因为它们不包含当天。如果要在SQL语句中使用date literal,则应使用DATE '2014-04-01'形式,例如

SELECT name,grade 
from users 
where date_column  BETWEEN  DATE '2014-04-01' - INTERVAL 6 MONTH 
                      AND DATE '2014-04-01'

<强>更新

从评论看来,问题实际上是 - 如何解析不完整的日期字符串。您可以使用STR_TO_DATE,但是您必须在最后添加-01,否则您将获得0的无效日期。 ,即20140-04-00而不是2014-04-01