2011-03-29 35 views
0

我將數據保存在一個sql服務器數據庫中,我用它在asp.net(c#)中繪製圖形,一個字段是INT,另一個是日期時間 目前圖只繪製了表中的所有數據,我想知道是否有任何方法可以在sql字符串中添加一條僅用於今天或本週或本月的語句。從sql server中選擇1天/周/月timedate

這是目前我的SQL字符串: 「:46:06.377 2011-03-29 00」

回答

0

有可能是一個更有效的方式,但我首先想到的是類似如下:

SELECT [Time], [Temp] 
FROM [test2] 
WHERE 
    month([Time]) = month(getdate()) AND 
    datediff(day, [Time], getdate() <= 7 AND 
    day([Time]) = day(getdate()) 

,然後添加參數,爲哪個版本要使用的每一行,所以你只需要一個查詢。

1

您可以使用月,日

SelectCommand="SELECT [Time], [Temp] FROM [test2] ORDER BY [Time]"<br> 

的日期時間是在是格式SQL

SELECT Month([Time]) as Month,Day([Time]) as Day, [Temp] FROM [test2] ORDER BY [Time] 
-1
SELECT [Time], [Temp] 
FROM [test2] 
WHERE datediff(day/week/month/year, [Time], getdate()) == 0 
0

我認爲你不應該在你的表的字段上使用任何函數。如果沒有,檢索數據會更快。

今日查詢。首先計算出今天沒有時間部分getdate()

declare @Today datetime = dateadd(d, datediff(d, 0, getdate()), 0) 

select [Time], Temp 
from test2 
where [Time] >= @Today and 
     [Time] < @Today + 1 

查詢當前周。首先找出一週的第一天。

declare @FirstDayOfWeek datetime = dateadd(d, datediff(d, 0, getdate()), 0)- datepart(dw, getdate()) 
select [Time], Temp 
from test2 
where [Time] >= @FirstDayOfWeek and 
     [Time] < @FirstDayOfWeek + 7 

查詢爲當月

declare @FirstDayOfMonth datetime = dateadd(m, datediff(m, 0, getdate()), 0)  

select [Time], Temp 
from test2 
where [Time] >= @FirstDayOfMonth and 
     [Time] < dateadd(m, 1, @FirstDayOfMonth)