使用Sql Server 2008时,我的表中有一个名为Date的列,我想获取特定日期的数据....我需要在WHERE条件下给出这个日期。
例如,如果我想获取给定日期中特定月份的记录,我该如何在WHERE条件中使用此日期。
DATANAME(MONTH,'@Date')
如果我在查询中这样给出,我可以从给定的DATE获得月份,就像我尝试放入WHERE条件一样,
WHERE DATE= DATANAME(MONTH,'@Date')
此处报告转换错误...如何显示特定月份的数据,任何人都可以帮助我
答案 0 :(得分:3)
如果您想要一个月的数据表,您应该检查一个间隔。如果要在列上应用函数,则查询无法使用日期列上的索引。
使用类似的内容获取2012年4月的数据。
-- The date parameter
declare @Date datetime
set @Date = '2012-04-11'
declare @FromDate datetime
declare @ToDate datetime
-- set FromFate to first of april
set @FromDate = dateadd(month, datediff(month, 0, @Date), 0)
-- set ToDate to first of may
set @ToDate = dateadd(month, 1+datediff(month, 0, @Date), 0)
select *
from YourTable
where [Date] >= @FromDate and [Date] < @ToDate
答案 1 :(得分:2)
如果您想显示特定年份和月份的数据,可以使用YEAR和MONTH功能:
SELECT ...
FROM ...
WHERE YEAR(mydate) = 2012 AND MONTH(mydate) = 3 -- March, 2012
答案 2 :(得分:1)
对我而言,您的字段Date
似乎不属于varchar
或nvarchar
,因此使用Datetime =字符串的条件显然是错误的。
你试过吗
WHERE DATE= @Date
答案 3 :(得分:1)
不应该是:
DATENAME(MONTH, @Date)
而不是:
DATANAME(MONTH,'@Date')
(注意&#34; DATA&#34; vs&#34; DATE&#34; @Date不在报价单中)
然后在日期/日期时间列中使用它,你必须像下面那样投射双方:
WHERE datename(Month, [Date]) = datename(Month, [Date])
警告:以上内容不使用任何索引,因此效率不如"WHERE Date = Date"
答案 4 :(得分:1)
首先:从变量中删除''。 @Date,而不是'@Date'
如果您想查找特定月份的日期。 (你必须记住年份状况)
WHERE DATANAME(MONTH, @Date) = 'April'
如果你想找到确切的日期:
WHERE DATE = @date