【问题标题】:Limiting MySQL results to prior days of the week将 MySQL 结果限制在一周的前几天
【发布时间】:2013-02-07 19:15:15
【问题描述】:

我有一张这样的桌子:

id | gallons_used | date
----------------------
1    2             157263300
2    5             157262000
...

我想得到一个结果集,其中只包含一周中第 X 天(星期一或星期二或星期三等)发生的记录

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    WHERE 子句中使用DAYNAME()

    WHERE DAYNAME(FROM_UNIXTIME(`date`)) = 'Monday'  <-- by day of the week
      AND `date` < INTERVAL CURRENT_DATE - 7 DAY     <-- within the last week
    

    您也可以使用DAYOFWEEK(),但这更具可读性。

    【讨论】:

    • date 是一个 Unix 时间戳。首先需要转换。
    • 正确。我忽略了这一点。固定。
    • 你不是也需要第二个date吗?
    【解决方案2】:

    假设您的 date 列是时间戳,则以周三检查为例:

    DAYOFWEEK(date) = 4 
    

    参考文档:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_dayofweek

    SQLFiddle:http://www.sqlfiddle.com/#!2/12762/3

    我也有一个FROM_UNIXTIME() 电话,但我认为这不是必需的(不是 100% 肯定)。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_from-unixtime

    【讨论】:

      【解决方案3】:

      由于您使用的是 Unix 时间戳,因此您可以使用以下内容:

      SELECT id, UNIX_TIMESTAMP(`date`)
      FROM ...
      WHERE DAYNAME(FROM_UNIXTIME(`date`)) = 'Monday'
        AND `date` > UNIX_TIMESTAMP() - 604800
      

      See the demo

      【讨论】:

        猜你喜欢
        • 2021-02-28
        • 2013-11-13
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多