我有一个表格设置,如下所示。
表名:活动。
activity_id , Date , assign_engr , Task_Type , Task_Status
1 , 2013-12-31 , Sachin , Monthly , Scheduled
2 , 2013-12-23 , Mikel , Weekly , Done
3 , 2013-10-18 , John , Monthly , Done
我想使用Date字段获取当月的数据,如下所示:
select * from activity where Date='current month'
有人可以帮我解决这个问题吗?
答案 0 :(得分:6)
您可以尝试这样:
select * from activity where MONTH(`Date`)=MONTH(NOW())
and YEAR(`Date`)=YEAR(NOW())
答案 1 :(得分:1)
您似乎以MySQL日期格式存储日期,因此这应该有效:
SELECT * FROM activity
WHERE date_format(activity.`Date`, '%Y-%m') = date_format(now(), '%Y-%m')
你也需要限制年份,我至少假设;否则只检查月份值将获得所有年份的那个月。
答案 2 :(得分:-1)
这是索引友好替代方案(假设date
不包含时间组件,这意味着它的类型为DATE
)
SELECT *
FROM activity
WHERE date BETWEEN LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
AND LAST_DAY(CURDATE())
注意:强>
date
列MONTH()
,YEAR()
...)应用于您正在搜索的列,因为它会使任何索引的使用无效(索引)你可能会有效地在桌面上进行全面扫描。 这是 SQLFiddle 演示