我正在寻找一种解决方案,以使用 mySQL 查找自一个(或多个)整周(7 天)以来创建的每个结果。
我试过这个,但有时结果似乎是错误的,因为每周有不止一个结果。
SELECT *
FROM `datatable`
WHERE MOD(TIMESTAMPDIFF(DAY,UNIX_TIMESTAMP(created),NOW()),7)=0;
- created 是一个时间戳。
感谢您的任何回复!
我正在寻找一种解决方案,以使用 mySQL 查找自一个(或多个)整周(7 天)以来创建的每个结果。
我试过这个,但有时结果似乎是错误的,因为每周有不止一个结果。
SELECT *
FROM `datatable`
WHERE MOD(TIMESTAMPDIFF(DAY,UNIX_TIMESTAMP(created),NOW()),7)=0;
感谢您的任何回复!
尝试这个:
SELECT
*
FROM
`datatable`
WHERE 1
AND `created` >= DATE_FORMAT(NOW() - INTERVAL 7 DAY,'%Y-%m-%d 00:00:00')
AND `created` <= DATE_FORMAT(NOW() - INTERVAL 7 DAY,'%Y-%m-%d 23:59:59')
据我了解的问题,您想要的记录比 a certainDate新,并且不超过 7 天,或 14 天,...,140 天(以最接近于当前的certainDate 为准)日期。
如果我理解正确,以下可能对您有用certainDate = '2013-04-01 00:00:00'
SELECT *
FROM `datatable`
WHERE `created` >= ADDDATE(
'2013-04-01 00:00:00',
INTERVAL MOD(ABS(TIMESTAMPDIFF(DAY, NOW(), '2013-04-01 00:00:00')),7) DAY
)
此查询将获取created
过去 14 天内的所有结果。
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
如果不带参数调用,则返回 Unix 时间戳(自 '1970-01-01 00:00:00' UTC 以来的秒数)作为无符号整数。如果使用日期参数调用 UNIX_TIMESTAMP(),它返回参数的值作为自 '1970-01-01 00:00:00' UTC 以来的秒数,日期可以是 DATE 字符串、DATETIME 字符串、TIMESTAMP 或格式为 YYMMDD 或 YYYYMMDD 的数字。服务器将日期解释为当前时区的值,并将其转换为 UTC 的内部值。客户端可以按照http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html中的描述设置他们的时区 。
所以,不要使用UNIX_TIMESTAMP()
函数,而要简单DATE()
。