Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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查询时间戳比较_Mysql_Database - Fatal编程技术网

MYSQL查询时间戳比较

MYSQL查询时间戳比较,mysql,database,Mysql,Database,给定一个包含时间戳的列的表,我想计算TIMEDIFF(now(),timestamp)大于某个值的实例数。我遇到的问题是如何将这一切实现到一个语句中。我的努力: SELECT COUNT*() FROM sometable WHERE (SELECT TIMEDIFF(now(),column_from_sometable) > 10 我只是不太确定如何在where语句中使用TIMEDIFF来进行比较。(显然,您必须使用SELECT调用该方法,然后我不确定如何从该语句中的sometabl

给定一个包含时间戳的列的表,我想计算
TIMEDIFF(now(),timestamp)
大于某个值的实例数。我遇到的问题是如何将这一切实现到一个语句中。我的努力:

SELECT COUNT*()
FROM sometable
WHERE (SELECT TIMEDIFF(now(),column_from_sometable) > 10

我只是不太确定如何在where语句中使用
TIMEDIFF
来进行比较。(显然,您必须使用
SELECT
调用该方法,然后我不确定如何从该语句中的
sometable
访问该列)。

如果列
column\u from\u sometable
属于同一个表
sometable
,则不需要进行子选择。您可以在
WHERE
条件中添加dimply,如

SELECT COUNT(*)
FROM sometable
WHERE TIMEDIFF(now(),column_from_sometable) > 10
您还可以通过在聚合函数中添加条件来简化此过程,如

SELECT SUM(CASE WHEN TIMEDIFF(now(),column_from_sometable) > 10 THEN 1 ELSE 0 END)
FROM sometable

COUNT*()
是打字错误吗?你是说计数(*)?我认为第一个更简单。我认为关键是:为了输出结果集,您需要在某个地方进行
SELECT
TIMEDIFF()
的示例使用
SELECT
仅获取简单的结果集,而不使用表格。在查询中,您可以使用该函数,而无需在其前面放置
SELECT
。@MarcusAdams,这是正确的,但我看到很多人(这里是SO)更喜欢第二个选项:)@Rahul如果性能没有差异,我更喜欢易于理解的代码。大多数情况下,它的代码多了几行。所以我同意马库斯的观点(两个都是1),那确实是个打字错误。谢谢你的解决方案,这就是我需要的!