2016-07-25 1 views
0

から1日を減算することで、日付の結果を得るために、どのように私は私が2日を引くときは、しかし、私は常に取得結果は、1900年から始まる00-00-00夜十二時00分00秒 に日付差を取得したいと思います-01-01。

は、どのように私はこれが唯一残っている日付と時刻を表示するのですか。 または述べ偶数値(X)日(X)時間(X)分

SELECT TOP 
    [Open_Date] 
    ,[Close_Date] 
    ,([Open_Date]-[Close_Date]) as [test] 
    ,[time_spent_sum] 
    ,[support_lev] 
    ,[Priority] 
    ,[CountCases] 
    ,[Last_Update_Status] 
    ,[Last_Update_Date] 
    ,[Customer Group] 
    ,[Assignee Group] 
    ,[3rd_Party] 
    ,[rootcause] 
    ,[location_name] 
    ,[Dataline] 
    ,[InterfaceID] 
    ,[DAYS OPEN] 
    FROM [mdb].[dbo].[ReportsView] 

私はいくつかの改宗をいじりが、所望の効果を得ていないされています。 datediffが実際にどのように伝えるように、より正確に、あなたは2つの日付の間の実際の時間を見つける必要がある2つの期間の間に日/時間/分/秒の数を表現するために

case 
    when [Close_Date] is null then format(convert(smalldatetime, dateadd(minute, (datediff(minute,[Open_Date],getdate())), ''), 114),'d ''days'' HH ''Hrs'' :mm ''Mins'' ') 
    when [Close_Date] is not null then format(convert(smalldatetime, dateadd(minute, (datediff(minute,[Open_Date],[Close_Date])), 0), 114),'d ''days'' HH ''Hrs'' :mm ''Mins'' ') 
    else null 
    end as [Total_call_open_time] 

DATES

+1

参照DATEDIFF関数を使用しているDBMS – Serg

+0

?それらはすべて "DATE ARITHMETIC"をサポートしますが、機能名と構文が異なります。 – FDavidov

+0

こんにちは私は – Jay

答えて

0

あなたが交差する多くの境界。例えば

次の両方が二つの期間でほぼ48時間の差があるにもかかわらず、1の値を返します。このように

select datediff(day,'2000-01-01 00:00:01','2000-01-02 23:59:59') 
select datediff(day,'2000-01-01 23:59:59','2000-01-02 00:00:01') 

は、次のように使用して、あなたはそれが必要なものを行いますDIV /とMOD %が余っ合計時間スパンと何かを計算する:

declare @d1 datetime = dateadd(day,-1,dateadd(hour,-2,dateadd(minute,-3,dateadd(second,-4,getdate())))) 
declare @d2 datetime = getdate() 

select datediff(hour,@d1,@d2)/24 as Days 
     ,datediff(minute,@d1,@d2)/60%24 as Hours 
     ,datediff(second,@d1,@d2)/60%60 as Minutes 
     ,datediff(second,@d1,@d2)%60%60 as Seconds 

     ,cast(datediff(hour,@d1,@d2)/24 as nvarchar(3)) + case when cast(datediff(day,@d1,@d2) as nvarchar(3)) = 1 then ' Day, ' else ' Days, ' end 
     + cast(datediff(minute,@d1,@d2)/60%24 as nvarchar(3)) + case when cast(datediff(hour,@d1,@d2)%24 as nvarchar(3)) = 1 then ' Hour, ' else ' Hours, ' end 
     + cast(datediff(second,@d1,@d2)/60%60 as nvarchar(3)) + case when cast(datediff(Minute,@d1,@d2)%60 as nvarchar(3)) = 1 then ' Minute, ' else ' Minutes, ' end 
     + cast(datediff(Second,@d1,@d2)%60%60 as nvarchar(3)) + case when cast(datediff(Second,@d1,@d2)%60%60 as nvarchar(3)) = 1 then ' Second' else ' Seconds' end as TimeDifference 
+0

が、これは完璧だった、ありがとう! – Jay