我知道这是一个愚蠢的问题,但即使我问Google,我也无法理解。
这是我的情景:
我的数据库中有一个名为Sales
的表,其中一列名为dateTime
。
dateTime
格式与此2014-07-29 21:07:36.000
类似。
现在,我希望查看2014-07-XX
中的所有数据。
有人可以帮忙吗?谢谢,抱歉我的英语不好:)
答案 0 :(得分:1)
您可以执行以下操作:
SELECT <YouColumns> FROM Sales
WHERE dateTime >= '2014-07-01' AND dateTime < '2014-08-01';
这样,SQL Server甚至可以在dateTime上使用索引,如果有的话。
答案 1 :(得分:0)
类似的东西:
Select * from
sales
where Month(dateTime)=7 and Year(dateTime)=2014
答案 2 :(得分:0)
Declare @From datetime='7/1/14'
,@To datetime='7/31/14'
Select *
FROM Sales
Where [dateTime]>=@From
and [dateTime]<@To+1 --to get last day greater than midnight.
这将捕获所有日期时间,包括最后几天的时间戳。您可能不应该使用dateTime作为列名。
答案 3 :(得分:0)
您可以使用datediff
。
Select * from
sales
where datediff(mm, '01-jul-2014', [dateTime]) = 0
这样您就可以轻松地将比较日期作为参数传递。
来自MSDN -
返回指定datepart的count(有符号整数) 指定的startdate和enddate之间交叉的边界
在这种情况下,我们使用mm来获取两个日期的月份差异并检查它们的差异是否为0.