Как добавить день в день в Linq для SQL

Я пишу этот код. Здесь dt является вводом в функцию, а также someint. Столбец Exp является столбцом даты T-SQL, который поставляется как DateTime через Linq.

return (from a in dataContext.TableOfA
       where a.name == "Test" &&
       a.Exp.Value.AddDays(Convert.ToDouble(Someint)) >= new DateTimeOffset(dt)
       select a).First();

В C # вы можете добавить двойное число как день к дате. Это означает, что вы можете добавить 1,5 дня. В T-SQL вы можете добавить только 1 день, затем 12 часов. Вы должны добавить int для каждой части. Поэтому, когда Linq переводит AddDays в T-SQL, он преобразует мое количество дней в миллисекунды и добавляет их. Это позволяет ему дать всю точность, которую двойник дает C #.

Вот руб. Когда это попадает в SQL, я получаю ошибку:

The datepart millisecond is not supported by date function dateadd for data type date

Обычно вы не можете добавлять миллисекунды к дате. Ну, не шучу. Но как мне получить то, что здесь переводится? Я хочу добавить int дней к дате. Единственное, что нужно сделать, чтобы добавить их негатив к другому парню, с которым я сравниваю? Что если я хочу сравнить столбцы при добавлении в один?

Update 1

Keith wrote, A command like datepart(millisecond, 10000, myDate) has been supported in T-SQL since at least SQL Server 2000. This error suggests that whatever database you are using does not support the millisecond date part, which seems strange to me.

Обратите внимание, что я использую SQL Server 2008. Он не поддерживается типом данных DATE. Поддерживается на datetime.

Ответы на вопрос(8)

Ваш ответ на вопрос