我将数据保存在一个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)