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

标签 sql-server tsql datetime

可以在这个问题上使用大师的帮助。试图计算两个日期时间值之间的时间并在 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/

相关文章:

sql-server - SQL Server中有没有办法唯一标识数据库?

.net - 在应用程序中添加动态数据透视表的最佳方式

java - 如何从java在mongo db中插入日期

sql-server - SQL Server 中运算符 != 和 <> 有什么区别?

sql - hierarchyid适合频繁插入叶子节点的大树吗?

sql-server - 添加具有生成名称的 DEFAULT 约束

c# - 创建数据库接口(interface)

SQL Server 子查询循环

python - 如何在Python中将 '%Y:%m:%d'转换为日期?

python - Django - 仅从 datetime.strptime 获取日期