|
16.03.2015, 16:03 | #1 |
Программер
|
Не работает условие по дате.
Есть запрос по проводкам:
Код: EXISTS JOIN InventTrans WHERE InventTable.ItemId == InventTrans.ItemId && InventTrans.inventDimId == 'AAAAJWTIQ' && InventTrans.DatePhysical >= str2DateDMY('12.03.2015') && InventTrans.DatePhysical <= str2DateDMY('12.03.2015') Если же убрать одно из условий по дате, например так Код: EXISTS JOIN InventTrans WHERE InventTable.ItemId == InventTrans.ItemId && InventTrans.inventDimId == 'AAAAJWTIQ' && InventTrans.DatePhysical >= str2DateDMY('12.03.2015') В чем может быть причина? |
|
16.03.2015, 16:16 | #2 |
Участник
|
А просто по условию равенства отрабатывает?
InventTrans.DatePhysical == 12\03\2015
__________________
Axapta v.3.0 sp5 kr2 |
|
16.03.2015, 16:20 | #3 |
Программер
|
Нет, не срабатывает.
|
|
16.03.2015, 16:21 | #4 |
NavAx
|
Наверно в том, что нет проводок за 12.03.2015.
|
|
16.03.2015, 16:21 | #5 |
Участник
|
Вы точно уверены, что у вас есть проводки на 12 марта?
__________________
Axapta v.3.0 sp5 kr2 |
|
16.03.2015, 16:26 | #6 |
Программер
|
Да, проводки есть. Правда даты в них изначально были на 03.03. Сейчас джобом поменяли на 12.
|
|
16.03.2015, 17:38 | #7 |
Участник
|
В том джобе, которым Вы делали замену, в качестве нового значения Вы указывали значение типа Date или UTCDateTime?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
16.03.2015, 17:49 | #8 |
Программер
|
|
|
16.03.2015, 16:45 | #9 |
Участник
|
А на 03.12 селект случайно ничего не находит?
__________________
Ivanhoe as is.. |
|
16.03.2015, 16:57 | #10 |
Участник
|
Или поменяли финансовую дату, например
__________________
Axapta v.3.0 sp5 kr2 |
|
16.03.2015, 16:59 | #11 |
Программер
|
Нет, даты в проводках 100% стоят на 12 марта.
Условие не работает что на физ. дату, что на фин. дату. При чем когда мы убираем одно условие по дате, и запрос работает. Без разницы какое условие мы оставим ">=" или "<=", запрос отработает. |
|
16.03.2015, 17:01 | #12 |
Участник
|
Смотрите, что за запрос уходит на сервер
__________________
Axapta v.3.0 sp5 kr2 |
|
16.03.2015, 17:18 | #13 |
Программер
|
Через трассировку запросов, ничего толкового не увидел. Те же условия >= и <=.
А где еще посмотреть можно? Что то я давно с таким не сталкивался |
|
16.03.2015, 17:22 | #14 |
Участник
|
А посмотреть, что именно запрос находит? В смысле, какую именно дату
X++: ItemId itemId = 'XXXXX'; InventDimId inventDimId = 'AAAAJWTIQ'; TransDate transDate = str2DateDMY('12.03.2015'); InventTrans inventTrans; ; select firstonly inventTrans order by DatePhysical asc where InventTrans.ItemId == itemId && InventTrans.inventDimId == inventDimId && InventTrans.DatePhysical >= transDate; info(strFmt('>= %1', InventTrans.DatePhysical)); select firstonly inventTrans order by DatePhysical desc where InventTrans.ItemId == itemId && InventTrans.inventDimId == inventDimId && InventTrans.DatePhysical <= transDate; info(strFmt('<= %1', InventTrans.DatePhysical));
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
16.03.2015, 17:31 | #15 |
Программер
|
Результат запросов:
Цитата:
Информация Сообщение (17:29:33) >= 12.03.2015
Информация Сообщение (17:29:33) <= 04.03.2015 |
|
16.03.2015, 17:34 | #16 |
Программер
|
Точнее нет. <= не вернул 12ое число. Хотя должен был.
|
|
16.03.2015, 17:36 | #17 |
Программер
|
Может ли быть что это из-за индексов, или еще какого кэша данных?
|
|
16.03.2015, 17:36 | #18 |
Программер
|
Время в базе данных проверяли. Стоят нули.
|
|
16.03.2015, 17:34 | #19 |
Участник
|
Цитата:
Вы можете проверить на уровне SQL-сервера, не оказалось ли записано в поле InventTrans.DatePhysical кроме даты еще и время? Именно наличие времени может привести к подобному результату.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
16.03.2015, 17:35 | #20 |
Участник
|
Если во втором запросе действительно сортировка обратная стоит, то получается неверно.
Должна быть одинаковая дата
__________________
Axapta v.3.0 sp5 kr2 |
|