在SQL Server中筛选日期时间

时间:2014-07-30 11:14:41

标签: sql-server datetime

我知道这是一个愚蠢的问题,但即使我问Google,我也无法理解。

这是我的情景:

我的数据库中有一个名为Sales的表,其中一列名为dateTime

dateTime格式与此2014-07-29 21:07:36.000类似。

现在,我希望查看2014-07-XX中的所有数据。

有人可以帮忙吗?谢谢,抱歉我的英语不好:)

4 个答案:

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