首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我是否可以在MySQL的TIMESTAMPDIFF函数中使用SubSelect代替DateTime表达式?

问我是否可以在MySQL的TIMESTAMPDIFF函数中使用SubSelect代替DateTime表达式?
EN

Stack Overflow用户
提问于 2018-10-30 00:36:56
回答 1查看 130关注 0票数 1

我要计算开始时间和结束时间之间的总秒数。显然,TIMESTAMPDIFF in MySQL在DateTime表达式方面做得很好,比如

代码语言:javascript
复制
SELECT TIMESTAMPDIFF(SECOND,'2018-10-30 04:45:42','2018-10-30 06:01:42');

但是我想做的是使用Selects来代替expressions.But,我得到了错误。

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-30 00:45:58

可以,但是子查询需要是标量子查询。标量子查询返回一个列,最多返回一行。您可以使用limit 1或聚合函数(没有group by)来完成这一任务。

想必,您想要这样的查询:

代码语言:javascript
复制
select TIMESTAMPDIFF(SECOND, TIMESTAMP(start_time), NOW())
from shift
where TIME(NOW()) >= start_time and TIME(NOW()) <= end_time;

编辑:

如果您有一个标量子查询,那么:

代码语言:javascript
复制
SELECT TIMESTAMPDIFF(SECOND,
                     (SELECT TIMESTAMP(start_time) 
                      FROM shift 
                      WHERE TIME(NOW()) >= start_time AND 
                            TIME(NOW()) <= end_time
                     ), NOW()
                    ) 

as start_time不属于。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53055789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档