从sql server timedate中选择1天/周/月

时间:2011-03-29 17:12:39

标签: asp.net sql sql-server datetime

我将数据保存在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”

5 个答案:

答案 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