Wednesday, 17 July 2013

Calculate total hors between two dates using sql server

declare @WorkingHours int,@TotalHours varchar(50)

Set @WorkingHours = 0
                Select @WorkingHours = DateDiff (second, getdate()-1, getdate())
               
                        SELECT @TotalHours  =  CASE WHEN LEN(H) = 1
                                THEN '0' + h
                                ELSE h END
                                + ':' +
                                CASE WHEN LEN(m) = 1
                                THEN '0' + m
                                ELSE m END
                                + ':' +
                                CASE WHEN LEN(s) = 1
                                THEN '0' + s
                                ELSE s END
                                FROM
                                (
                        select
                          CAST(@WorkingHours / 3600 AS VARCHAR(3)) as [h],
                          CAST(@WorkingHours % 3600 / 60 AS VARCHAR(3)) as [m],
                          CAST(@WorkingHours % 3600 % 60 AS VARCHAR(3))as [s])as x
select @TotalHours


2nd method

DECLARE @articleDT DATETIME;

DECLARE @nowDate DATETIME;




 
-- Time of the ARTICLE created
 
 
SET @articleDT = getdate()-365




 
-- Simulation of NOW datetime

-- (in real world you would probably use GETDATE())
 
 
SET @nowDate = '2015-10-21 06:45:05.703';




 
-- Created 9 days ago.
 
 
SELECT 'Created ' + CAST(DATEDIFF(day, @articleDT, @nowDate) AS NVARCHAR(50)) + ' days ago.';




 
-- Created 1 weeks, 2 days, 3 hours, 25 minutes and 20 seconds ago.
 
 
SELECT 'Created '

+ CAST(DATEDIFF(second, @articleDT, @nowDate) / 60 / 60 / 24 / 7 AS NVARCHAR(50)) + ' weeks, '

+ CAST(DATEDIFF(second, @articleDT, @nowDate) / 60 / 60 / 24 % 7 AS NVARCHAR(50)) + ' days, '

+ CAST(DATEDIFF(second, @articleDT, @nowDate) / 60 / 60 % 24 AS NVARCHAR(50)) + ' hours, '

+ CAST(DATEDIFF(second, @articleDT, @nowDate) / 60 % 60 AS NVARCHAR(50)) + ' minutes and '

+ CAST(DATEDIFF(second, @articleDT, @nowDate) % 60 AS NVARCHAR(50)) + ' seconds ago.';

No comments:

Post a Comment