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),那确实是个打字错误。谢谢你的解决方案,这就是我需要的!