2011-03-29 40 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)