【发布时间】:2013-02-07 19:15:15
【问题描述】:
我有一张这样的桌子:
id | gallons_used | date
----------------------
1 2 157263300
2 5 157262000
...
我想得到一个结果集,其中只包含一周中第 X 天(星期一或星期二或星期三等)发生的记录
【问题讨论】:
我有一张这样的桌子:
id | gallons_used | date
----------------------
1 2 157263300
2 5 157262000
...
我想得到一个结果集,其中只包含一周中第 X 天(星期一或星期二或星期三等)发生的记录
【问题讨论】:
在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吗?
假设您的 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
【讨论】:
由于您使用的是 Unix 时间戳,因此您可以使用以下内容:
SELECT id, UNIX_TIMESTAMP(`date`)
FROM ...
WHERE DAYNAME(FROM_UNIXTIME(`date`)) = 'Monday'
AND `date` > UNIX_TIMESTAMP() - 604800
【讨论】: