Чуть чуть покопался.
Пока только DAX4, в DAX2012 что-то у меня сейчас поток запросов идет, в выводе профайлера сложно найти нужное.
Ну, оказалось, что datediff не используется.
При forceplaceholders запрос формируется
Код:
exec sp_cursorprepexec @p1 output,@p2 output,N'@P1 nvarchar(8),@P2 int',
N'SELECT COUNT(A.RECID)
FROM LEDGERJOURNALTRANS A
WHERE ((DATAAREAID=@P1) AND (DUE<(TRANSDATE+@P2)))'
В значении параметра @P1 идет код компании, в параметре @P2 1 (единица).
В итоге вроде нормально: TRANSDATE+@P2, где @P2 целое число, дает следующий день (в дате как раз целая часть это дни).
При forceliterals запрос
Код:
exec sp_cursoropen @p1 output,
N'SELECT COUNT(A.RECID)
FROM LEDGERJOURNALTRANS A
WHERE ((DATAAREAID=N''КодКомпании'') AND (DUE<(TRANSDATE+{ts ''1901-01-01 00:00:00.000''})))'
А вот тут 1901-01-01 00:00:00.000 это, как и указал
Maximin год, а не день.