如果我做了
SELECT SEC_TO_TIME(100);
我得到了一个正确的时间戳,但如果我执行以下操作则会中断
SELECT SEC_TO_TIME(SELECT SUM(totaltime) FROM tablename WHERE entry_id = 2)
总时间存储为整数值和查询 返回语法错误,你能在sec_to_time函数中做一个嵌套的select语句吗?
这是从c#数据适配器执行的,因此我无法操纵查询之外的数据,否则我会得到总和并进行一些数学计算。
答案 0 :(得分:2)
在子查询上调用函数时需要一组额外的括号:
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 |
+------------------------------------------------------------------------+
答案 1 :(得分:0)
试试这个:
SELECT SEC_TO_TIME(stt) as stt_stt
FROM ( SELECT SUM(totaltime) as stt
FROM tablename
WHERE entry_id = 2) as x
但是在sql小提琴中,这给了我January, 01 1970 00:12:47+0000
,我很确定这不是你想要的......
http://sqlfiddle.com/#!8/819fd/2/0
(不保证,但这是我要开始的)
答案 2 :(得分:0)
这是我能想到的另一种方式。
SELECT SEC_TO_TIME(SUM(totaltime)) FROM tablename WHERE entry_id = 2