我有一些约会......
1900-01-01 00:06:11.847
1900-01-01 00:09:12.097
1900-01-01 01:16:08.533
1900-01-12 20:08:04.453
1900-01-12 20:08:04.517
1902-12-30 04:58:52.500
1902-12-30 05:04:08.840
1903-08-30 21:03:07.187
1904-01-31 20:18:10.063
1904-04-02 06:05:52.313
1905-02-27 04:08:07.353
1905-04-02 22:08:07.377
作为查询的结果......
SELECT ... GetDate() - [LastRunTime] as 'Age' ....
我希望结果是更友好,更易读的格式,例如1d 3h 17m 25s
任何帮助都将不胜感激。
编辑:我可能不会在最终显示中包含秒数。
答案 0 :(得分:3)
这将显示xd xh xm格式的结果:
select CAST(datediff(dd, [LastRunTime], GetDate()) AS VARCHAR(12))+'d '+
CAST(datediff(hh, [LastRunTime], GetDate())%24 AS VARCHAR(2))+'h '+
CAST(datediff(n,[LastRunTime], GetDate())%60 AS VARCHAR(2))+'m'
答案 1 :(得分:1)
你的问题已经写了'datepart'。
declare @t table(dates datetime)
insert @t values('1900-01-01 00:06:11.847')
insert @t values('1900-01-01 00:09:12.097')
select cast(datepart(day, getdate() - dates) as varchar(2))+' d '
+ cast(datepart(hour, getdate() - dates) as varchar(2))+' h '
+ cast(datepart(minute, getdate()- dates) as varchar(2))+' m '
+ cast(datepart(second, getdate()- dates) as varchar(2))+' s'
from @t
答案 2 :(得分:0)
使用DATEDIFF()会以您选择的格式为您提供一段时间。
例如,您可以计算两个日期之间的秒数,如下所示:
SELECT DATEDIFF(s, [LastRunTime], GETDATE())
然后将其设置为“天,小时,分钟,秒”,您可以使用用户定义函数将其作为nvarchar
这篇SO帖子可以帮助你实现这个目标:
SQL Convert Seconds into Day:Hour:Min:Sec
然后你会这样做:
SELECT dbo.DHMS(DATEDIFF(s, [LastRunTime], GETDATE()))
编辑:此解决方案仅适用于相隔不到68年的日期。