Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何按时间选择?_Mysql_Sql_Database_Join_Select - Fatal编程技术网

Mysql 如何按时间选择?

Mysql 如何按时间选择?,mysql,sql,database,join,select,Mysql,Sql,Database,Join,Select,如何使用时间到秒()选择长度超过2:00:00的歌曲(id) 输出 id time 2 7:23:40 8 2:06:04 4 2:41:18 使用带有7200秒的简单where子句 select * from songs where TIME_TO_SEC(length)>7200 在这里,您不一定需要使用时间到秒。我们可以做一个直接比较: SELECT * FROM songs WHERE length > '02:00:00'; 这假设您的长度列是真

如何使用时间到秒()选择长度超过2:00:00的歌曲(id)

输出

 id time
 2   7:23:40
 8    2:06:04
 4   2:41:18

使用带有7200秒的简单
where
子句

select * from songs where TIME_TO_SEC(length)>7200

在这里,您不一定需要使用
时间到秒
。我们可以做一个直接比较:

SELECT *
FROM songs
WHERE length > '02:00:00';
这假设您的
长度
列是真正的时间列,或者它是文本,但所有数据的宽度相同,为8(6位)


这种方法的优点是它允许在查询中使用
长度的索引。

我认为这将正常工作:

SELECT id, SEC_TO_TIME(SUM(TIME_TO_SEC(length))) AS time
GROUP BY id
HAVING SUM(TIME_TO_SEC(length)) >  2 * 60 * 60

提示:
where time-to-sec(length)>2*60*60
@Gordon Linoff,谢谢。我可以使用where(选择秒到秒时间(sum(IFNULL)(时间到秒(长度),0))>2:00:00);对
NULL
值使用合并函数将使条件失败,因此没有理由单独处理它们。@Баааааааааааааааааааааааа,这很难理解,因为你描述了一件有问题的事情,但在评论中说了你想要的不同的事情,那么如何才能读懂你的心思,请用示例输出正确地描述你想要的是什么?谢谢,你的查询是否总结了id相同时的时间?这听起来像是一个新问题。也许你应该编辑你的问题,告诉我们真正的要求。我投票决定结束,因为我不清楚。我不知道你到底想要什么。
SELECT id, SEC_TO_TIME(SUM(TIME_TO_SEC(length))) AS time
GROUP BY id
HAVING SUM(TIME_TO_SEC(length)) >  2 * 60 * 60