【问题标题】:Select data from last month sql从上个月的sql中选择数据
【发布时间】:2014-01-06 10:16:05
【问题描述】:

我有这个代码可以从当月的数据库数据中选择:

SELECT * FROM daily_reports
WHERE username = '$username' and MONTH(date) = MONTH(Now())
order by date DESC

现在我想显示上个月的数据。

列日期为日期类型

【问题讨论】:

  • 注意:这将为您提供每年当前月份的数据
  • MONTH(date_sub(NOW(), INTERVAL 1 MONTH))
  • 我绝对认为这可以帮助你。 stackoverflow.com/questions/1479745/…
  • 提问前先搜索一下,你的问题有很多答案。

标签: php mysql


【解决方案1】:

试试这个

SELECT * FROM daily_reports 
WHERE username = '$username' 
and MONTH(date) = MONTH(DATE_ADD(Now(), INTERVAL -1 MONTH)) order by date DESC

【讨论】:

    【解决方案2】:

    这应该可行:-

    SELECT *
     FROM daily_reports 
    WHERE username = '$username' 
    and MONTH(date) = MONTH(DATE_ADD(Now(), INTERVAL -1 MONTH))
     order by date DESC
    

    【讨论】:

    • 在你的陈述中使用 BETWEEN。
    • 这还将为您提供每年可用数据的指定月份的数据。
    • 要仅获取一个月的数据,请添加AND YEAR(date) = YEAR(DATE_ADD(Now(), INTERVAL -1 MONTH))
    【解决方案3】:
    SELECT 
      * 
    FROM
      daily_reports 
    WHERE username = '$username' 
      AND dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();
    ORDER BY DATE DESC 
    

    【讨论】:

      【解决方案4】:

      您可以对日期进行许多操作,如精美手册所示。

      在你的情况下,DATE_SUB function 可能是最清楚的:

      SELECT * FROM daily_reports
      WHERE username = '$username' AND MONTH(date) = MONTH(DATE_SUB(Now(), INTERVAL 1 MONTH)
      ORDER BY date DESC
      

      【讨论】:

        【解决方案5】:
        date BETWEEN date_format
        (NOW() - INTERVAL 1 MONTH, '%Y-%m-01') 
        AND last_day(NOW() - INTERVAL 1 MONTH)
        

        【讨论】:

          猜你喜欢
          • 2014-07-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-19
          • 1970-01-01
          • 1970-01-01
          • 2010-11-06
          相关资源
          最近更新 更多