Mysql 计算时间戳小于24小时的行数
对于下面的查询,如何计算Mysql 计算时间戳小于24小时的行数,mysql,timestamp,Mysql,Timestamp,对于下面的查询,如何计算datesent小于24小时的行数?(字段datesent是一个时间戳) 提前感谢, 约翰 您可以使用该函数。从where子句中的当前日期减去一天 差不多 DATE_SUB(NOW(), INTERVAL 1 DAY) 编辑:将CURTIME()更改为NOW() 使用: SELECT COUNT(*) AS cnt FROM PRIVATEMESSAGE pm WHERE pm.datesent >= DATE_SUB(NOW(), INTERVAL 1 D
datesent
小于24小时的行数?(字段datesent
是一个时间戳)
提前感谢,
约翰
您可以使用该函数。从where子句中的当前日期减去一天
差不多
DATE_SUB(NOW(), INTERVAL 1 DAY)
编辑:将CURTIME()更改为NOW()
使用:
SELECT COUNT(*) AS cnt
FROM PRIVATEMESSAGE pm
WHERE pm.datesent >= DATE_SUB(NOW(), INTERVAL 1 DAY)
我看到这是一个老问题,不过对于任何稍后通过在线搜索来到这里的人来说,我想澄清的是,问题是关于时间戳,而不是日期时间。我需要一个基于时间戳的计数。简单的解决方法是将datetime转换为unix\u时间戳。在MySQL 5.7上测试
SELECT COUNT(*) AS cnt
FROM PRIVATEMESSAGE pm
WHERE pm.datesent >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))
我删除了
css
标记,因为它与问题无关。CURTIME
只返回时间,而不是日期和时间。CURTIME只返回当前时间,与当前日期无关。您可能希望改为传递NOW()。这将返回每行的计数,因为它将在减去24小时后比较现有值是否大于或等于相同值。。。对表中的列执行函数也意味着索引(如果存在)不能用于该操作。没错。对不起,我不使用MySQL,所以在发布之前我没有机会测试这个解决方案。单位是小时(单数),而不是小时。请参阅您已经提供的链接:这是将正确的值传递到DATE_子线程的第一个参数中的唯一答案。。。这看起来很有希望。但我很难把结果重复出来看看它是否有效。我怎么能回显总数呢?@John:我更新定义了一个列别名--“cnt”是您在PHP中获取列的值所引用的。
SELECT COUNT(*) AS cnt
FROM PRIVATEMESSAGE pm
WHERE pm.datesent >= DATE_SUB(NOW(), INTERVAL 1 DAY)
SELECT COUNT(*) AS cnt
FROM PRIVATEMESSAGE pm
WHERE pm.datesent >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))