数据库中的[Date]字段为DateTime
,并以此格式放置数据。问题出在调试模式。当我向查询发送日期()时。查询找不到任何记录。我认为这是因为小时数的差异。所以我尝试了DateTime.Now.Date
,但它仍然无效(小时部分仍然存在)
SELECT [Employee_Id]
FROM [Scheduling_Employee].[dbo].[Date]
where [Date]=@dateTime;
答案 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]
中获益。