簡體   English   中英

T-SQL格式化日期算術以更友好的格式生成

[英]T-SQL formatting Date arithmetic results in a friendlier format

我有一些約會......

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

任何幫助,將不勝感激。

編輯:我可能不會在最終顯示中包含秒數。

這將顯示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'

你的問題已經寫了“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

使用DATEDIFF()會以您選擇的格式為您提供一段時間。

例如,您可以計算兩個日期之間的秒數,如下所示:

SELECT DATEDIFF(s, [LastRunTime], GETDATE())

然后將其轉換為“天,小時,分鍾,秒”,您可以使用用戶定義函數將其作為nvarchar返回

這篇SO帖子可以幫助你實現這個目標:

SQL將秒轉換為日:小時:分:秒

然后你會做:

SELECT dbo.DHMS(DATEDIFF(s, [LastRunTime], GETDATE()))

編輯:此解決方案僅適用於相隔不到68年的日期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM