选择查询找不到现有记录

时间:2014-07-26 16:12:10

标签: c# datetime

数据库中的[Date]字段为DateTime,并以此格式enter image description here放置数据。问题出在调试模式。当我向查询发送日期(enter image description here)时。查询找不到任何记录。我认为这是因为小时数的差异。所以我尝试了DateTime.Now.Date,但它仍然无效(小时部分仍然存在)

SELECT [Employee_Id]  
FROM [Scheduling_Employee].[dbo].[Date] 
where [Date]=@dateTime;

4 个答案:

答案 0 :(得分:2)

更改查询以针对datetime的日期进行搜索,并仅发送日期;

...
where cast([date] as date) = @date

(这种方式仍然是可以理解的)

答案 1 :(得分:0)

像Alex K建议的那样试试这个或CAST:

WHERE DATEPART(year,[DATE]) = DATEPART(year,@dateTime) 
  AND DATEPART(dy,[DATE]) = DATEPART(dy,@dateTime)

答案 2 :(得分:0)

由于[Date]是一个日期时间,它试图比较整个值(而不仅仅是日期)。

如果您尝试按日期过滤,而不是按日期时间过滤,请将您的位置更改为以下内容:

where DATEPART(YEAR, [Date])=DATEPART(YEAR, @dateTime) 
AND DATEPART(MONTH, [Date])=DATEPART(MONTH, @dateTime) 
AND DATEPART(DAY, [Date])=DATEPART(DAY, @dateTime)

答案 3 :(得分:0)

还可以传递日期时间间隔并检查您的列是否在其中。

where [Date]>=@lowerBound and [Date]<@upperBound;

对于今天的记录,间隔的下限为DateTime.Now.Date,上限为DateTime.Now.Date.AddDays(1)。这样,如果编入索引,您将从索引[Date]中获益。