Показать сообщение отдельно
Старый 18.09.2022, 19:19   #6  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Чуть чуть покопался.
Пока только 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 год, а не день.

Последний раз редактировалось Raven Melancholic; 18.09.2022 в 19:21.
За это сообщение автора поблагодарили: sukhanchik (6).