![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема запроса с таблицы Paradox с помощью BDE LocalSQL [D6, Paradox]
Vovan69 © (2006-11-02 19:09:00)Есть таблица Paradox с полями D2, D1 типа TDate.
Следующий запрос работает неправильно:
SELECT * FROM Tablica
WHERE (D2-D1+1) = 5
т.е. выдаются записи, для которых D2-D1+1 = 7,6,8,...
Как добиться правильного вычитания между датами в запросе?
Asail (2006-11-03 23:59:00) [1]
> ASoft (03.11.06 16:01) [19]
Ага, я тоже проверил - работает. Что-то афтор не договаривает ...
ASoft (2006-11-03 16:01:00) [2]млин, специально проверил, все работает...и 4 и 5, запрос выбрал то что надо. Чудеса...
мож я в сабж не врубился?
Anatoly Podgoretsky (2006-11-03 13:40:00) [3]Теперь с 4 не работает.
Desdechado (2006-11-03 13:35:00) [4]WHERE D2-D1 = 4
зачем сбивать с толку преобразование типов добавлением левых чисел, если можно без них обойтись?
Anatoly Podgoretsky (2006-11-03 13:26:00) [5]> ЮЮ (03.11.2006 10:46:14) [14]
Конечно, они не причем, только как авторы данной бухгалтерии.
ASoft (2006-11-03 10:58:00) [6]WHERE (D2-D1)+1 = 5
ЮЮ (2006-11-03 10:46:00) [7]это только у евреев 39005.0 - 39000.0 = 5 ?
Anatoly Podgoretsky (2006-11-03 10:42:00) [8]> ASoft (03.11.2006 10:38:11) [11]
Да какая разница trunc или нет, он же утверждает, что запрос возвращает
записи не равные точно пяти. Или дурдом или тайная бухгалтерия.
Anatoly Podgoretsky (2006-11-03 10:40:00) [9]> ЮЮ (03.11.2006 10:37:10) [10]
> b.Data - o.Data = 5
> в SQL Explorer вернул только с Days = 5
Это насколько надо отвратительно написать интерпритатор, что фундаментальное
правило математики работало по еврейским правилам. Не верю я в это.
ASoft (2006-11-03 10:38:00) [10]WHERE (trunc(D2)-(trunc(D1)+1) = 5
ЮЮ (2006-11-03 10:37:00) [11]SELECT
b.Data - o.Data Days, o.*, b.*
FROM
Bills b
JOIN Orders o ON b.OrderId = o.Id
WHERE
b.Data - o.Data = 5
в SQL Explorer вернул только с Days = 5
ЮЮ (2006-11-03 10:33:00) [12]Выполни запрос в SQL Explorer.
Ибо в программе ты можешь наблюдать результаты далеко не того запроса :)
Anatoly Podgoretsky (2006-11-03 10:31:00) [13]> ЮЮ (03.11.2006 10:26:07) [7]
Истинно для любых значений не равных 5
Может и не люблю, но автор одназначно вешает нам не шею мучные изделия.
ЮЮ (2006-11-03 10:26:00) [14]Anatoly Podgoretsky © (03.11.06 10:19) [5]
Типа, для парадокса (D2-D1+1) = 5 истинно для любых значений D2 и D1
Все, конечно, знают о твоей нелюбви к Парадоксу, но не до такой же степени :)
Vovan69 (2006-11-03 10:24:00) [15]Anatoly Podgoretsky © (03.11.06 10:19) [5]
:))
Других идей нет?
Anatoly Podgoretsky (2006-11-03 10:19:00) [16]> Vovan69 (03.11.2006 10:11:04) [4]
Сменить СУБД на ту, в которой правильно работает оператор сравнения
Vovan69 (2006-11-03 10:11:00) [17]Desdechado © (02.11.06 20:19) [3]
Вот весь код:
SELECT * FROM Tablica
WHERE (D2-D1+1) = 5
выдаются записи, для которых D2-D1+1 = 5 и D2-D1+1 <>5
P.S.: Выход конечно есть:) Например, добавить в таблицу поле Days (Integer), заполнить его значением D2-D1+1 и делать запросы по полю Days на здоровье. Но если нельзя добавлять поля в таблицу, что тогда делать с простыми арифметическими операциями над полями типа даты в тексте запроса??
Desdechado (2006-11-02 20:19:00) [18]> WHERE (D2-D1+1) = 5
> т.е. выдаются записи, для которых D2-D1+1 = 7,6,8,...
я че-то не понял, идет проверка на равенство пяти, а выдаются больше пяти?
код давай
Vovan69 (2006-11-02 19:27:00) [19]Anatoly Podgoretsky © (02.11.06 19:22) [1]
Хорошо - Date.
Как добиться правильной работы запроса?
Anatoly Podgoretsky (2006-11-02 19:22:00) [20]> Vovan69 (02.11.2006 19:09:00) [0]
В Парадоксе нет полей типа TDate