Question

I am trying to compare the dates and display the difference in twitter styled format (2 seconds ago, 1 minute ago, 2 days ago etc) with MSSQL 2008. Any help would be much appreciated. Thanks in advance.

Was it helpful?

Solution

Will this help you? You may need to add more condition for days and weeks

declare @dt datetime =getdate();
declare @posttime datetime =dateadd(SECOND,-2,getdate());
declare @diff bigint;

set @diff=datediff(SECOND,@posttime,@dt)
select case when @diff<60 then
            convert(varchar(2),@diff)+' seconds ago' 
            when @diff between 60 and 3599 then
                convert(varchar(2),@diff/60)+' minutes ago' 

            else
                convert(varchar(2),@diff/3600)+' hours ago' 
        end
--Next post which was about 1 minute ago
set @posttime=dateadd(SECOND,-62,getdate());
set @diff=datediff(SECOND,@posttime,@dt)

select 
    case when @diff<60 then
                convert(varchar(2),@diff)+' seconds ago' 
            when @diff between 60 and 3599 then
                convert(varchar(2),@diff/60)+' minutes ago'         
            else
                convert(varchar(2),@diff/3600)+' hours ago' 
            end

OTHER TIPS

This will help u

DECLARE @D DATETIME 
SET @D = CAST('2014-02-17 13:10:50.053' AS DATETIME)
SELECT @D 
SELECT GETDATE() 
SELECT CASE WHEN    DATEDIFF(HH,@D,GETDATE()) > 48 THEN CAST( DATEDIFF(D,@D,GETDATE()) AS VARCHAR(20))+'  DAYS AGO'
            WHEN    DATEDIFF(HH,@D,GETDATE()) > 24 THEN CAST( DATEDIFF(D,@D,GETDATE()) AS VARCHAR(20))+'  DAY AGO'

            WHEN    DATEDIFF(HH,@D,GETDATE()) > 1 THEN CAST( DATEDIFF(HH,@D,GETDATE()) AS VARCHAR(20))+' HOURS AGO'
            WHEN    DATEDIFF(HH,@D,GETDATE()) = 1 THEN CAST( DATEDIFF(HH,@D,GETDATE()) AS VARCHAR(20))+' HOUR AGO'


            WHEN    DATEDIFF(MINUTE,@D,GETDATE()) > 1 THEN CAST( DATEDIFF(MINUTE,@D,GETDATE()) AS VARCHAR(20))+' MINUTES AGO'
            WHEN    DATEDIFF(MINUTE,@D,GETDATE()) = 1 THEN CAST( DATEDIFF(MINUTE,@D,GETDATE()) AS VARCHAR(20))+' MINUTE AGO'

            WHEN    DATEDIFF(SECOND,@D,GETDATE()) > 1 THEN CAST( DATEDIFF(SECOND,@D,GETDATE()) AS VARCHAR(20))+' SECS AGO'
            WHEN    DATEDIFF(SECOND,@D,GETDATE()) = 1 THEN CAST( DATEDIFF(SECOND,@D,GETDATE()) AS VARCHAR(20))+' SEC AGO'
       END TIMESPAN
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top