获取特殊格式的句点
Getting The Period in Special Format
我尝试将 Sql 函数定义为 return 格式 DAY:HOUR:MINUTE 来自整数输入(秒)。
应该如何进行内部查询?
在标准 SQL 中,您可以这样写:
time '00:00:00' + 5000 * interval '1 second'
您可以在实际操作中看到这一点 here。
但是,并非所有数据库都支持此功能。 date/time 函数是出了名的 database-dependent.
在SQL服务器中,您可以使用:
select convert(time, dateadd(second, 5000, 0))
这可能是一个很长的代码,但我相信它有效
DECLARE @INPUT AS INT = 5000
DECLARE @HOUR AS INT
DECLARE @MINUTE AS INT
DECLARE @SEC AS INT
SET @HOUR = @INPUT / (60 * 60)
SET @INPUT = @INPUT - (@HOUR * 60 * 60)
SET @MINUTE = @INPUT / 60
SET @INPUT = @INPUT - (@MINUTE * 60)
SET @SEC = @INPUT
SELECT cast(@HOUR AS NVARCHAR(10)) + ':' + replace(str(@MINUTE, 2, 0) + ':' + str(@SEC, 2, 0), ' ', '0')
更新
刚刚注意到您在结果 中也包含了 天,因此如果需要该天,查询应该是:
DECLARE @INPUT AS INT = 432010
DECLARE @DAY AS INT
DECLARE @HOUR AS INT
DECLARE @MINUTE AS INT
DECLARE @SEC AS INT
SET @DAY = @INPUT / (24 * 60 * 60)
SET @INPUT = @INPUT - (@DAY * 24 * 60 * 60)
SET @HOUR = @INPUT / (60 * 60)
SET @INPUT = @INPUT - (@HOUR * 60 * 60)
SET @MINUTE = @INPUT / 60
SET @INPUT = @INPUT - (@MINUTE * 60)
SET @SEC = @INPUT
SELECT CAST(@DAY AS NVARCHAR(10)) + ':' + REPLACE(STR(@HOUR, 2, 0) + ':' + STR(@MINUTE, 2, 0) + ':' + STR(@SEC, 2, 0), ' ', '0')
这里以返回5:00:00:10
为例,意思是Five days and 10 seconds
还有一个选择
例子
Declare @YourTable table (SomeCol int)
Insert Into @YourTable values
(5000)
,(95000)
Select left(SomeCol/86400,3)
+':'
+left(convert(time,DATEADD(second,SomeCol,0)),8)
From @YourTable
Returns
(No column name)
0:01:23:20
1:02:23:20
我尝试将 Sql 函数定义为 return 格式 DAY:HOUR:MINUTE 来自整数输入(秒)。
应该如何进行内部查询?
在标准 SQL 中,您可以这样写:
time '00:00:00' + 5000 * interval '1 second'
您可以在实际操作中看到这一点 here。
但是,并非所有数据库都支持此功能。 date/time 函数是出了名的 database-dependent.
在SQL服务器中,您可以使用:
select convert(time, dateadd(second, 5000, 0))
这可能是一个很长的代码,但我相信它有效
DECLARE @INPUT AS INT = 5000
DECLARE @HOUR AS INT
DECLARE @MINUTE AS INT
DECLARE @SEC AS INT
SET @HOUR = @INPUT / (60 * 60)
SET @INPUT = @INPUT - (@HOUR * 60 * 60)
SET @MINUTE = @INPUT / 60
SET @INPUT = @INPUT - (@MINUTE * 60)
SET @SEC = @INPUT
SELECT cast(@HOUR AS NVARCHAR(10)) + ':' + replace(str(@MINUTE, 2, 0) + ':' + str(@SEC, 2, 0), ' ', '0')
更新
刚刚注意到您在结果 中也包含了 天,因此如果需要该天,查询应该是:
DECLARE @INPUT AS INT = 432010
DECLARE @DAY AS INT
DECLARE @HOUR AS INT
DECLARE @MINUTE AS INT
DECLARE @SEC AS INT
SET @DAY = @INPUT / (24 * 60 * 60)
SET @INPUT = @INPUT - (@DAY * 24 * 60 * 60)
SET @HOUR = @INPUT / (60 * 60)
SET @INPUT = @INPUT - (@HOUR * 60 * 60)
SET @MINUTE = @INPUT / 60
SET @INPUT = @INPUT - (@MINUTE * 60)
SET @SEC = @INPUT
SELECT CAST(@DAY AS NVARCHAR(10)) + ':' + REPLACE(STR(@HOUR, 2, 0) + ':' + STR(@MINUTE, 2, 0) + ':' + STR(@SEC, 2, 0), ' ', '0')
这里以返回5:00:00:10
为例,意思是Five days and 10 seconds
还有一个选择
例子
Declare @YourTable table (SomeCol int)
Insert Into @YourTable values
(5000)
,(95000)
Select left(SomeCol/86400,3)
+':'
+left(convert(time,DATEADD(second,SomeCol,0)),8)
From @YourTable
Returns
(No column name)
0:01:23:20
1:02:23:20