显示当前以小时为单位的列?

时间:2013-10-04 13:48:25

标签: sql sql-server sql-server-2008

我有一个名为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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

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

答案 2 :(得分: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
相关问题