我要计算开始时间和结束时间之间的总秒数。显然,TIMESTAMPDIFF in MySQL在DateTime表达式方面做得很好,比如
SELECT TIMESTAMPDIFF(SECOND,'2018-10-30 04:45:42','2018-10-30 06:01:42');但是我想做的是使用Selects来代替expressions.But,我得到了错误。
SELECT TIMESTAMPDIFF(SECOND,
(SELECT TIMESTAMP(start_time)
FROM shift
WHERE TIME(NOW()) >= start_time AND
TIME(NOW()) <= end_time) AS start_time, NOW())所以,我的问题是,是否可以用Selects替换TIMESTAMPDIFF中的TIMESTAMPDIFF表达式?我怎样才能做到这一点?
更新: TIMESTAMPDIFF中的子选择返回一个标量值,即时间戳,即2018-10-30 06:00:00。
发布于 2018-10-30 00:45:58
可以,但是子查询需要是标量子查询。标量子查询返回一个列,最多返回一行。您可以使用limit 1或聚合函数(没有group by)来完成这一任务。
想必,您想要这样的查询:
select TIMESTAMPDIFF(SECOND, TIMESTAMP(start_time), NOW())
from shift
where TIME(NOW()) >= start_time and TIME(NOW()) <= end_time;编辑:
如果您有一个标量子查询,那么:
SELECT TIMESTAMPDIFF(SECOND,
(SELECT TIMESTAMP(start_time)
FROM shift
WHERE TIME(NOW()) >= start_time AND
TIME(NOW()) <= end_time
), NOW()
) as start_time不属于。
https://stackoverflow.com/questions/53055789
复制相似问题