14.09.2022, 15:57 | #1 |
NavAx
|
Параметры и литералы - разные результаты запросов с датами
На днях обнаружил прекрасное.
Сразу скажу, что это 4ка или 2009. 2012ю заводить не стал - просьба имеющим проверить. Суть в чем - следующий Job выдает разное кол-во записей в зависимости от того, forceliterals в запросе или forceplaceholders. Глюк связан с обработкой дат при их передаче как литералов в выражениях критериев запросов where. Там в качестве вот этой плюс единицы к TransDate (т.е. любому полю типа "дата") получается не один день, как можно ожидать, и как срабатывает при передаче через параметр, а что-то вроде {ts'1901-01-01 00:00:00'} т.е. один ГОД! X++: static void JobSQLDateParamTest(Args _args) { LedgerJournalTrans ljt; ; select //forceliterals forceplaceholders count(recid) from ljt where ljt.Due < ljt.TransDate + 1; info(int642str(ljt.Recid)); }
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... Последний раз редактировалось Maximin; 14.09.2022 в 16:15. |
|
Теги |
literal, parameters passing, sql |
|
|