我將數據保存在一個sql服務器數據庫中,我用它在asp.net(c#)中繪製圖形,一個字段是INT,另一個是日期時間 目前圖只繪製了表中的所有數據,我想知道是否有任何方法可以在sql字符串中添加一條僅用於今天或本週或本月的語句。從sql server中選擇1天/周/月timedate
這是目前我的SQL字符串: 「:46:06.377 2011-03-29 00」
我將數據保存在一個sql服務器數據庫中,我用它在asp.net(c#)中繪製圖形,一個字段是INT,另一個是日期時間 目前圖只繪製了表中的所有數據,我想知道是否有任何方法可以在sql字符串中添加一條僅用於今天或本週或本月的語句。從sql server中選擇1天/周/月timedate
這是目前我的SQL字符串: 「:46:06.377 2011-03-29 00」
有可能是一個更有效的方式,但我首先想到的是類似如下:
SELECT [Time], [Temp]
FROM [test2]
WHERE
month([Time]) = month(getdate()) AND
datediff(day, [Time], getdate() <= 7 AND
day([Time]) = day(getdate())
,然後添加參數,爲哪個版本要使用的每一行,所以你只需要一個查詢。
您可以使用月,日
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]
的功能,你可以使用一些諸如month
date functions
返回指定日期的月份部分。
SELECT [Time], [Temp]
FROM [test2]
WHERE datediff(day/week/month/year, [Time], getdate()) == 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)