Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 计算时间戳小于24小时的行数_Mysql_Timestamp - Fatal编程技术网

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))