我有一个SQL Server 2016事件表,其中事件日期和开始时间存储在单独的列中。我试图编写一个查询来识别表中是否已存在DateTime
的提供列表中的哪个,因此我需要在进行如下比较之前添加或组合EventDate
和StartTime
列:
public List<DateTime> DoEventsExist(List<DateTime> dateBatch)
{
try
{
DBContext.Events.Where(ce => dateBatch.Contains(ce.EventDate + ce.StartTime));
}
catch (Exception ex)
{
}
}
我相信这会给我以下错误
无法将加法表达式转换为SQL。
在这种情况下,列分别为Date
和Time
类型(因此.NET类型为DateTime
和TimeSpan
),但是我也想知道如果它们都是DateTime2
类型。我现在唯一想到的解决方案是使用TVP转换为存储过程。
给定了一个日期时间值列表,这种查询风格确实无法将您带到想要的位置。
根据您的建议,将其更改为TVP。
您也可以按照建议将TVP传递给过程,但是TVP也可以作为参数传递给adhoc SQL查询。