我有日期列字段,它的数据看起来像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这样的日子里得到了结果
答案 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
。