以特殊格式获取期间

Posted

技术标签:

【中文标题】以特殊格式获取期间【英文标题】:Getting The Period in Special Format 【发布时间】:2021-02-12 05:53:09 【问题描述】:

我尝试定义 Sql 函数以从整数输入(秒)返回格式 DAY:HOUR:MINUTE。

内部查询应该怎么做?

【问题讨论】:

请提供样本数据和期望的结果。什么是整数输入?同时标记您正在使用的数据库。 5000 返回 1:23:20 您的意思一定是 HOURS:MINUTES:SECONDS。 数学很简单:seconds / 3600, seconds / 60 % 60, seconds % 60 【参考方案1】:

这可能是一个很长的代码,但我相信它可以工作

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

【讨论】:

【参考方案2】:

在标准 SQL 中,你会这样写:

time '00:00:00' + 5000 * interval '1 second'

你可以在here看到这个。

但是,并非所有数据库都支持此功能。众所周知,日期/时间函数依赖于数据库。

在 SQL Server 中,您可以使用:

select convert(time, dateadd(second, 5000, 0))

【讨论】:

这应该在 2008R2 中工作。执行此语句时遇到什么错误?【参考方案3】:

另一种选择

示例

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

退货

(No column name)
0:01:23:20
1:02:23:20

【讨论】:

以上是关于以特殊格式获取期间的主要内容,如果未能解决你的问题,请参考以下文章

裁剪图像以获取特殊路径

获取自定义类型的Date()

excel自动填充数字以获取特殊值

处理特殊格式的GET传参

在调用服务器获取数据期间看不到 UIActivityIndi​​catorView

如何使用jquery获取html表单的每个客户端控件的名称name和value值?以json格式返回