我将数据保存在sql server数据库中,我用来在asp.net(c#)中绘制图形,一个字段是INT,另一个是日期时间 目前图表只是绘制表格中的所有数据,我想知道是否有任何方法可以在sql字符串中添加一个仅在今天或本周或本月说明的语句。
这是我的sql字符串:
SelectCommand="SELECT [Time], [Temp] FROM [test2] ORDER BY [Time]"<br>
日期时间所在的格式为“2011-03-29 00:46:06.377”
答案 0 :(得分:1)
您可以使用SQL的月,日功能
SELECT Month([Time]) as Month,Day([Time]) as Day, [Temp] FROM [test2] ORDER BY [Time]
答案 1 :(得分:1)
您可以使用date functions
之类的month
来返回指定日期的月份部分。
答案 2 :(得分:0)
可能有一种更有效的方式,但我的第一个想法是如下:
SELECT [Time], [Temp]
FROM [test2]
WHERE
month([Time]) = month(getdate()) AND
datediff(day, [Time], getdate() <= 7 AND
day([Time]) = day(getdate())
然后将参数添加到您要使用的版本的每一行,因此您只需要一个查询。
答案 3 :(得分: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)
答案 4 :(得分:-1)
SELECT [Time], [Temp]
FROM [test2]
WHERE datediff(day/week/month/year, [Time], getdate()) == 0