Domanda

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.

È stato utile?

Soluzione

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

Altri suggerimenti

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top