如果我做一个
SELECT SEC_TO_TIME(100);
我得到了正确的时间戳,但是如果我执行以下操作,它会中断
SELECT SEC_TO_TIME(SELECT SUM(totaltime) FROM tablename WHERE entry_id = 2)
总时间存储为整数值并且查询返回语法错误,您可以在 sec_to_time 函数中执行嵌套选择语句吗?
这是从 ac# 数据适配器执行的,所以我不能在查询之外操作数据,否则我会得到总和并在其中做一些数学运算。
如果我做一个
SELECT SEC_TO_TIME(100);
我得到了正确的时间戳,但是如果我执行以下操作,它会中断
SELECT SEC_TO_TIME(SELECT SUM(totaltime) FROM tablename WHERE entry_id = 2)
总时间存储为整数值并且查询返回语法错误,您可以在 sec_to_time 函数中执行嵌套选择语句吗?
这是从 ac# 数据适配器执行的,所以我不能在查询之外操作数据,否则我会得到总和并在其中做一些数学运算。
在子查询上调用函数时,您需要一组额外的括号:
SELECT SEC_TO_TIME( (SELECT SUM(totaltime) FROM tablename WHERE entry_id = 2) );
在我的测试数据库中:
mysql> select * from tablename;
+----------+-----------+
| entry_id | totaltime |
+----------+-----------+
| 2 | 100 |
| 2 | 200 |
+----------+-----------+
mysql> SELECT SEC_TO_TIME((SELECT SUM(totaltime) FROM tablename WHERE entry_id = 2));
+------------------------------------------------------------------------+
| SEC_TO_TIME((SELECT SUM(totaltime) FROM tablename WHERE entry_id = 2)) |
+------------------------------------------------------------------------+
| 00:05:00 |
+------------------------------------------------------------------------+
试试这个:
SELECT SEC_TO_TIME(stt) as stt_stt
FROM ( SELECT SUM(totaltime) as stt
FROM tablename
WHERE entry_id = 2) as x
但在 sql fiddle 中,这给了我January, 01 1970 00:12:47+0000,我很确定这不是你想要的......
http://sqlfiddle.com/#!8/819fd/2/0
(对此没有任何保证,但这是我要开始的)
这是我能想到的唯一其他方法。
SELECT SEC_TO_TIME(SUM(totaltime)) FROM tablename WHERE entry_id = 2