Sql 显示一列';现在是以秒为单位还是以小时为单位?
我有一个名为title_runtime的列,它以秒为单位,我想以小时为单位显示,并且只显示运行时间超过三小时的列。这就是我得到的,减去转换:Sql 显示一列';现在是以秒为单位还是以小时为单位?,sql,sql-server,sql-server-2008,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 ti
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
将列标题除以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
将列标题除以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
如果除法运算中的两个值都是
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
如果除法运算中的两个值都是
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
要精确测量小时数,需要除以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
要精确测量小时数,需要除以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
虽然可能是这样,但OP可能并不关心小数部分。据我们所知,存储的项目的运行时间为个月。。。(向上投票的btw)无效的列名title\u runtime\u hrs
!虽然可能是这样,但OP可能并不关心分数部分。据我们所知,存储的项目的运行时间为个月。。。(向上投票的btw)无效的列名title\u runtime\u hrs
!请您澄清一下,您是否希望运行时间10975
秒显示为3:02:55
或3.048611
?我希望它显示在3.048611中。title\u runtime
条件是适用于所有三年还是仅适用于2001年?如果是前者,则需要将或
括在括号中:(标题发布年份='1999'或…或…)和…
。或者只在中使用:title\u release\u year IN('1999'、'2000'、'2001'))还有……
。请您澄清一下,您希望运行时间10975
秒显示为3:02:55
还是3.048611
?我希望它显示在3.048611中。title\u runtime
条件是适用于所有三年还是仅适用于2001年?如果是前者,则需要将或
括在括号中:(标题发布年份='1999'或…或…)和…
。或者在
中使用:title\u release\u year IN('1999'、'2000'、'2001')和…
@AndriyM如果你是关于
,那么这只是一个想法,而不是一个精确的解决方案:)不,这是关于或的,没有括在括号中。可能不是问题,但可能是。这个问题不清楚OP是否希望运行时条件仅适用于2001年,因此。。。我要提到它。至于title\u runtime>3*3600
,我个人实际上比title\u runtime/3600.0>3
@AndriyM当然,sargable谓词要好得多,刚才提到的WHERE
子句呢。@AndriyM如果你谈到
,那么这只是一个想法而不是一个确切的解决方案:)不,这是关于没有括在括号内的或的问题。可能不是问题,但可能是。这个问题不清楚OP是否希望运行时条件仅适用于2001年,因此。。。我要提到它。至于title\u runtime>3*3600
,我个人实际上比title\u runtime/3600.0>3
@AndriyM更喜欢它。当然,sargable谓词更好,刚才提到的WHERE
子句呢。WHERE子句也是错误的title\u runtime/3600
将导致向下取整的int结果,这意味着运行时为3:59:59
的电影将被忽略。where子句也有错误title\u runtime/3600
将产生向下舍入的int结果,这意味着运行时间为3:59:59
的电影将被忽略。