Как я могу создать запрос LINQ2SQL, который не использует MILLISECOND при вызове DATEDIFF? - PullRequest
1 голос
/ 02 июня 2010

По умолчанию, если вы сравните две даты в запросе LINQ2SQL, результирующий SQL будет

DATEDIFF(MILLISECOND, .....)

, который также требует использования BIGINT и, как правило, несколько CONVERT вызовов в зависимости от того, что вы делаете. Например, попробуйте посмотреть на вывод SQL, если вы напишите

(DateTime1 - DateTime2).Days

Это беспорядок!

Я просто хотел бы позвонить, например, DATEDIFF(DAY, ...). Это возможно?

1 Ответ

2 голосов
/ 02 июня 2010

Это возможно!Оказывается, в System.Data.Linq.SqlClient есть несколько хороших методов, которые делают именно это.

DateDiffDay
DateDiffMinute
DateDiffMillisecond
.....

Результирующий вызов DATEDIFF будет содержать соответствующий первый параметр, и вы можете забыть обо всех вызовахCONVERT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...