2014-09-24 47 views
0

我有表中的SQL服務器如下組行日期

 
id | name | Date  | ---- |----- 
------------------------------------------- 

id1 | name1 | 24/09/2014 | ---- |----- 
id2 | name2 | 23/09/2014 | ---- |----- 
id3 | name3 | 23/09/2014 | ---- |----- 
id4 | name4 | 15/09/2014 | ---- |----- 
id5 | name5 | 01/08/2014 | ---- |----- 
id6 | name6 | 01/08/2013 | ---- |----- 

我怎麼能顯示在列表視圖作爲

 
Today 
---------- 
name 1 date :24/09/2014 

yesterday 
--------- 
name2 date :23/09/2014 
name3 date :23/09/2014 
last week 
--------- 
......... date :15/09/2014 

two weeks ago 
-------------- 
.............. 
last month 
-------------- 
.............. 
older 
-------------- 
.............. 

謝謝

+9

歡迎來到Stack Overflow。這不是在這裏提出問題的好方法。你有沒有嘗試_anything_到目前爲止解決你的問題?首先顯示你的努力,以便人們可以展示他們的努力請閱讀[常見問題],[問]和[幫助]作爲開始。 – 2014-09-24 06:28:35

+0

在這種情況下,您可以使用[病例聲明](http://msdn.microsoft.com/zh- /Iibrary/ms181765.aspx) 。您也可以使用linq過濾數據,以便在列表視圖中顯示它。 – 2014-09-24 06:30:30

回答

0

如果你想要這個in SQL

select id,name,date from yourtable group by id,name,date 
1

請嘗試一下低代碼。 如果您期待不同的結果,請清楚地發佈o/p。

SELECT concat(name ,' Date :',date) 'Today' 
    FROM #tmp 
    WHERE DATEDIFF(d,GETDATE() ,date) = 0 
SELECT concat(name ,' Date :',date) 'yesterday' 
    FROM #tmp 
    WHERE DATEDIFF(d,GETDATE() ,date) = -1 
+0

謝謝Vipul。我在SSMS中對代碼進行了格式化並粘貼在帖子中。它像以前一樣出現。如何做代碼的格式..? – arunbabu 2014-09-24 07:04:57

+0

只需通過上述鏈接中提供的指導,http://stackoverflow.com/help/formatting – 2014-09-24 07:51:16

0

所有你想從sqlserver這是完全不好的主意,你需要一些事情C#端。我創建了一個你剛剛通過日期並給出結果的樣本。

begin tran 
--drop table tempnew 
--create table tempnew 
--(id varchar(50), name varchar(100), date1 date) 
--set dateformat dmy 
--insert into tempnew 
--values 
--('id1' , 'name1', '24/09/2014') 
--,('id2' , 'name2', '23/09/2014') 
--,('id3' , 'name3', '23/09/2014') 
--,('id4' , 'name4', '22/09/2014') 
--,('id5' , 'name5', '15/09/2014') 

--create procedure getdataBydate 
--(
-- @paraDate date = null 
--) 
--as 
declare @paraDate date = getdate() -3 
declare @lastmonthofday int 
select @lastmonthofday = datepart(DD, DATEADD(d, -1, DATEADD(m, DATEDIFF(m, 0, GETDATE()) + 1, 0))) 
select @paraDate,@lastmonthofday,* from tempnew 

select name , 'date :', convert(varchar ,date1, 106) date1, 
case 
    when @paraDate = cast (getdate() AS DATE) then 'Today <br> ----- <br>' 
    when @paraDate = cast (dateadd(dd,-1, getdate()) as DATE) then 'Yesterday <br> ----- <br>' 
    when @paraDate >= cast (dateadd(dd,-14, getdate()) as DATE) then 'two weeks ago <br> ----- <br>' 
    when @paraDate = cast (dateadd(dd,[email protected], getdate()) as DATE) then 'last month <br> ----- <br>' 
    else 'older <br> ----- <br>' 
end 
from tempnew 
where DATE1 <= GETDATE() 
and date1 >= @paraDate 

--select * 
--from tempnew 
--where DATE1 <= GETDATE() 
--and date1 >= @paraDate 
----I don't know why between not work here 
----between cast('2014-09-24' as DATE) and cast('2014-09-15' as date) 
----cast DATE1 between cast(GETDATE() AS date) and @paraDate 


--drop table tempnew 
rollback