gpt4 book ai didi

sql-server - T-SQL 将计算列格式化为时间

转载 作者:行者123 更新时间:2023-12-03 16:07:56 27 4
gpt4 key购买 nike

可以在这个问题上使用大师的帮助。试图计算两个日期时间值之间的时间并在 T-SQL 查询中显示为时间...

SELECT arrivalDate - departDate AS timeToComplete

这应始终少于 24 小时。但是谁知道用户实际上可能输入什么?

我一直在尝试这样的事情,但没有结果。
SELECT  
CAST(time(7),
CONVERT(datetime, arrivalDate - departDate) AS timeToComplete) AS newTime,

而不是将结果显示为 1:23:41例如,有没有办法显示如下结果:
0D, 1H, 23M, 33S. 

感谢您对此的任何指导。

最佳答案

您可以在几秒钟内获得总差异,然后继续从中取出最大的部分。即,从天开始,然后是小时、分钟和秒。

DECLARE @arrivalDate DATETIME = '2013-01-19 23:59:59'
DECLARE @departDate DATETIME = '2013-01-25 11:52:30'

DECLARE @SecondsDifference INT = DATEDIFF(SECOND, @arrivalDate, @departDate)

DECLARE @DayDifference INT = @SecondsDifference / 86400
DECLARE @HourDifference INT = (@SecondsDifference - (@DayDifference * 86400)) / 3600
DECLARE @MinDifference INT = (@SecondsDifference - (@DayDifference * 86400) - (@HourDifference * 3600)) / 60
DECLARE @SecDifference INT = (@SecondsDifference - (@DayDifference * 86400) - (@HourDifference * 3600) - (@MinDifference * 60))

为清楚起见,我在这里使用变量完成了它,但您可以将其处理为单个查询。 DATEDIFF 不适用于较小的差异块,直到您删除较大的差异块,因为您会得到总数。例如:
DATEDIFF(HOUR, @arrivalDate, @departDate) 

将返回总小时数,而不是减去整天的小时数。

关于sql-server - T-SQL 将计算列格式化为时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859817/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com