从数据库获取当月的数据

时间:2013-12-22 06:18:05

标签: mysql sql

我有一个表格设置,如下所示。

表名:活动。

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'

有人可以帮我解决这个问题吗?

3 个答案:

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

注意:

  1. 确保您在date
  2. 上有索引
  3. 不要将任何功能(例如MONTH()YEAR() ...)应用于您正在搜索的列,因为它会使任何索引的使用无效(索引)你可能会有效地在桌面上进行全面扫描。
  4. 这是 SQLFiddle 演示