簡體   English   中英

如何在 SQL Server 中以小時、天、分鍾、秒顯示浮點數

[英]how to show float numbers in Hours, Day, Minute, Second in SQL Server

我在下表中有一個簡單的記錄:

Depart_dt                    Arrived_dt
10/1/2013 6:15:00 AM         10/1/2013 7:25:00 AM    

根據我的計算,它是1小時10分鍾。 感謝 VKP,我使用了 datediff 函數,如下所示:

Select 
Dateiff (DD, depart_dt, arrived_dt) as day,
Dateiff (HH, depart_dt, arrived_dt) as hour,
Dateiff (Minute, depart_dt, arrived_dt) as min,
Date if (second, depart_dt, arrived_dt) as second 
from temp

但是,我的結果在分鍾和第二列中看起來很有趣

Day   Hour   Min   Second 
0     1      70    4200

小時看起來是正確的,但我不確定分鍾列中的 70 和第二列中的 4200 是如何計算的?

對不起各位,我錯了。 是的,70 分鍾是正確的,因為那是 1 小時 10 分鍾。 請無視這個

您可以僅使用DATEDIFF將差異作為整數獲取。

select item, 
datediff(dd, start_dt, end_dt) as total_days,
datediff(hh, start_dt, end_dt) as total_hours,
datediff(minute, start_dt, end_dt) as total_minutes,
datediff(second, start_dt, end_dt) as total_seconds
from yourtable

使用 datediff 時,您必須了解它的作用。 該名稱非常令人困惑,因為它實際上並不計算日期差異,但根據文檔:“返回指定開始日期和結束日期之間跨越的指定日期部分邊界的計數(有符號整數)。”

這意味着例如 06:15 和 07:00 的 datediff 小時是 1 小時。

你可能想要這樣的東西:

DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])/86400 as Days,
((DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])%86400)/3600) as Hours,
(((DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])%86400)%3600)/60) as Minutes,
(((DATEDIFF(SECOND, [Depart_dt], [Arrived_dt])%86400)%3600)%60) as Seconds

這以全天/小時等計算金額,因此小時數永遠不會是 24 或更多。

暫無
暫無

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

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