0

我有一个名为 title_runtime 的列,它以秒为单位,我想以小时为单位显示,并且只显示运行时间超过三个小时的列。这就是我所拥有的,减去转换:

select title_name, title_type, title_release_year, title_runtime as title_runtime_hrs
from nf_titles
where title_release_year = '1999' or
    title_release_year = '2000' or
    title_release_year = '2001' and
    title_runtime > 3
order by title_release_year, title_runtime_hrs
4

3 回答 3

2

如果除法操作中的两者都是int结果将是int

试试这个:

select title_name, title_type, title_release_year, title_runtime / 3600.0 as title_runtime_hrs
from nf_titles
where title_release_year = '1999' or
    title_release_year = '2000' or
    title_release_year = '2001' and
    title_runtime > 3*3600
order by title_release_year, title_runtime_hrs
于 2013-10-04T13:55:04.307 回答
2

要获得精确的小时数,您需要除以 3600.0。不只是 3600。如果你除以 3600,你永远不会得到准确的小时数。例如,如果运行时间是 1/2 小时,则您需要结果为 1.5 小时。如果不除以 3600.0,这是不可能的。

SELECT title_name, title_type, title_release_year, title_runtime / 3600.0 as title_runtime_hrs
FROM nf_titles
WHERE title_release_year = '1999' or
title_release_year = '2000' or
title_release_year = '2001' and
title_runtime > (3.0 * 3600.0)
order by title_release_year, title_runtime_hrs

于 2013-10-04T14:02:25.043 回答
1

将列 title_runtime 除以 3600 。

select title_name, title_type, title_release_year, title_runtime/3600 as title_runtime_hrs
from nf_titles
where title_release_year = '1999' or
    title_release_year = '2000' or
    title_release_year = '2001' and
    title_runtime > 3*3600
order by title_release_year, title_runtime_hrs

上面的查询是错误的,我们需要强制浮点除法,否则像 1200 / 3600 这样的东西会显示列值为零。

title_runtime / 3600.0 as title_runtime_hrs
于 2013-10-04T13:51:50.227 回答