如何在SQL Server中将时间类型变量除以2

ser*_*zzo 3 t-sql sql-server

我有一个类型的变量TIME,我需要将此变量的时间除以2.

我的SQL代码:

DECLARE @TEMPO AS TIME = '01:31:00'

SELECT (@TEMPO / 2 ) AS RESULT

--the result should be: 00:45:30
Run Code Online (Sandbox Code Playgroud)

但SQL Server会抛出错误:

操作数类型冲突:时间与int不兼容

欢迎各方面的帮助!

Luk*_*zda 7

使用TIMEFROMPARTS(SQL Server 2012+):

DECLARE @TEMPO AS TIME = '01:31:00';
DECLARE @i INT = DATEDIFF(s, '00:00:00',@TEMPO)/2;

SELECT  TIMEFROMPARTS(@i/3600%60, @i/60%60 ,@i%60,0,0);
-- 00:45:30
Run Code Online (Sandbox Code Playgroud)

db <>小提琴演示


Joh*_*tti 5

另一个选择是将时间转换为datetime,然后转换为float,然后除以二。

DECLARE @TEMPO AS TIME = '01:31:00'

Select convert(time,convert(datetime,convert(float,convert(datetime,@Tempo))/2))
Run Code Online (Sandbox Code Playgroud)

退货

00:45:30.0000000
Run Code Online (Sandbox Code Playgroud)

  • 不错,适用于SQL Server 2008 (2认同)
  • @LukaszSzozda谢谢...我不明白为什么我们不能将时间转换为浮点数。毕竟,它只是24小时的十进制表示形式。 (2认同)