2013-02-13 48 views
5

可以在這個上使用guru幫助。嘗試計算兩個日期時間值和顯示之間的時間在T-SQL查詢時間...T-SQL格式化計算列作爲時間

SELECT arrivalDate - departDate AS timeToComplete 

這應該始終少於24小時。但是誰知道用戶可能會實際輸入什麼?

我一直在嘗試這樣的東西沒有resutls。

SELECT 
    CAST(time(7), 
    CONVERT(datetime, arrivalDate - departDate) AS timeToComplete) AS newTime, 

而是表示作爲一個例子的結果1:23:41的,是有辦法顯示類似的結果:

0D, 1H, 23M, 33S. 

感謝有這方面的指導。

+0

你也可以看看我更新的例子,它在select語句中實現你的需求。 – 2013-02-13 19:13:02

回答

2

只要是不同的:) 嘗試使用這種方法:

聲明@日期1日期時間; declare @ date2 datetime;

set @date1 = '2012-05-01 12:00:000' 
set @date2 = '2012-05-01 18:00:000' 


    SELECT 
    STUFF(
     STUFF(
      STUFF(
       RIGHT(CONVERT(NVARCHAR(19), CONVERT(DATETIME, DATEADD(second, DATEDIFF(S, @date1, @date2), '20000101')), 120), 11), 
       3, 1, 'D, '), 
      8, 1, 'H, '), 
     13, 1, 'M, ') + ' S'; 
+0

我不確定我是否理解你在這裏傳達的信息。首先有一些遺漏的括號,我想在SELECT語句中使用它。 – htm11h 2013-02-13 20:03:58

+0

也許你在複製查詢時犯了一個錯誤,我已成功運行此查詢。不幸的是,sqlfiddle現在不適合我,我不能與你分享查詢。 – 2013-02-13 20:39:20

+0

@roman爲什麼sqlfiddle無法訪問?網站有任何問題? – 2013-02-14 03:07:24

4

你可以在幾秒鐘內得到總差值,然後繼續佔用最大的部分。即,以天,然後小時,分鐘和秒開始。

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) 

會返回總小時數,而不是小時數減去全天。

+0

哇,這可能很難編碼,但我認爲它可能會最好地處理我的問題。試圖在SQL數據源控件中執行此操作。謝謝 – htm11h 2013-02-13 19:10:14

+0

將它變成一個返回完全格式化字符串(例如「0D,12H,30M,25S」)的函數可能是合適的,或者返回一個包含Integer Days,Hours,Minutes,Seconds列的數據集。這樣你可以在你的數據源中將它稱爲內聯。 – Bill 2013-02-13 20:04:42

+0

我發佈了一個更新,並提供了一個解決方案的鏈接,似乎工作得很好。再次感謝, – htm11h 2013-02-13 20:31:39