Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизВсе проблемы растут из Access?.... Найти похожие ветки
← →
Волу-Пизрак (2004-11-09 17:02) [0]В частности, для дат выполняешь операцию <= (меньше или равно)... и ничего не происходит.
А теперь подробнее тоже самое:)
Рабочая среда.
Access из OfficeXP SP1 зареген в ODBC.
Запросы работают, когда дело не касается сравнения дат.
Обращение к БД идёт через JDBC из сервлетов, запущеных на tomcat (3.3 и выше).
Вот выдержка из лога (SELECT вернул пустое множество записей, а Delete ничего не удалил)
[code]
Закрыватель сессий: текущее время: 9/10/2004 16:47:6
Закрыватель сессий: поправленное на 5 минут время: 9/10/2004 16:42:6
SQL-запрос (SELECT) SELECT * FROM Sessions WHERE (ActionTimeMark<=#9/10/2004 16:42:6#);
||WorkstationIP||UserLogin||Rolename||StartTimeMark||ActionTimeMark||
SQL-запрос (MODIFY) DELETE FROM Sessions WHERE (ActionTimeMark<=#9/10/2004 16:42:6#);
Удалено сессий с таймаутом: 0
[code]
И всё бы ничего. если бы условные сессиии не были начаты час назад... Таймаут устати условнй, потом больше будет, но это уже детали.
Это проблема Access или просто надо ввести невынрвариваемую абракадабру для сравнения значений DateTime?
Вынужден использовать Access за неименеем возможности уговорить преподов ещё и субд левую поставить. с томкэтом я разобрался считайчто, но вот насчёт замены Access договориться это очень мааааловероятно. Принесёшь, а скажут у них места на серверемало или что пиратское не ставим....
ODBC для mysql не смог поставить, так что поставить преподов перед фактом не удастся.
← →
sniknik © (2004-11-09 17:18) [1]#9/10/2004 16:42:6#
что из выделенного месяц а что день? скажи сразу, точно не заглядывая в национальные настройки системы/jet-а и что подставляется из дельфей, тоже не смотря?
раз... два... три... поздно, уже ошибся. а jet пытается подобрать нужную дату если предполагается ошибочная (естественно нафиг это не нужно простым прогерам, только путает) плюс у него есть разные "особенности" связанные с автоприведением типов (в реальности значит одно и тоже может сработать а может и нет в зависимости от самих данных и разных других условий)
....
фигня это все, пользуйся параметрами для задания дат, и обойдеш все эти "проблемы" автоматом.
← →
Волк-Призрак (2004-11-09 17:52) [2]Полный формат даты мне чтоли пользовать? Тоже в принципе вариант... попробую и скажу чем закончилось.
А вообще то было 9е октября - я в тот день впервые столкнулся с этой лажей:)
← →
Волк-Призрак (2004-11-09 18:10) [3]Полный формат даты не канает - там нет времени.
вот если например мой сервлет будет писать дату-время так:
#9 окт 2004 г. 17:54:01#
он поймёт, что я от него хочу?
или такую дату надо непременно в апострофы ("одинарные кавычки" совать), которые глючат нещадно?
← →
Johnmen © (2004-11-09 18:11) [4]Читать умеешь ? Слово "параметр" знакомо ?
← →
Волк-Призрак (2004-11-09 20:52) [5]И к выражениям "на ходу" и к выражениям в параметрах должны, по идее, применяиться одни и те же алгоритмы разбора строк.
Я покорпел малость и "нашел" другой вариант - разделил поле на два - время в одно положил, дату в другое. Всё заработало.
Теперь запросы выглядят так:
SELECT * FROM Sessions WHERE (ActionDateMark<=#9/10/2004#) AND (ActionTimeMark<=#20:44:58#);
и
DELETE FROM Sessions WHERE (ActionDateMark<=#9/10/2004#) AND (ActionTimeMark<=#20:44:58#);
← →
Anatoly Podgoretsky © (2004-11-09 21:04) [6]Волк-Призрак (09.11.04 20:52) [5]
Какой разбор строк может быть с типом Дата, это же двоичные данные.
← →
sniknik © (2004-11-09 22:09) [7]ну почему не понимают ясного (вроде бы) толкования?
где, покажи, у меня про полный формат написано?
> Теперь запросы выглядят так:
ActionDateMark это откуда? в прошлых запросах переменная с датой не участвовала, естественно неполное условие не приводило к нужному результату.
Anatoly Podgoretsky © (09.11.04 21:04) [6]
> Какой разбор строк может быть с типом Дата, это же двоичные данные.
какой, какой, сколько раз видел в параметр для даты строку пихают... вот такой. ;(
наверное тоже гдето так написано. (у архангельского?) не нельзя все на него валить, но где? теряюсь в догадках.
← →
Deniz © (2004-11-10 08:18) [8]> Волк-Призрак (09.11.04 20:52) [5]
>...
> Теперь запросы выглядят так:
> SELECT * FROM Sessions WHERE (ActionDateMark<=#9/10/2004#)
> AND (ActionTimeMark<=#20:44:58#);
> и
> DELETE FROM Sessions WHERE (ActionDateMark<=#9/10/2004#)
> AND (ActionTimeMark<=#20:44:58#);
А вот и неправильно, выбери ка 08/10/2004 + 22:00:00, ну или удали.
← →
SergP © (2004-11-10 08:23) [9]
> [5] Волк-Призрак (09.11.04 20:52)
>
> ... WHERE (ActionDateMark<=#9/10/2004#) AND (ActionTimeMark<=#20:44:58#);
А ты уверен что у тебя условие соответствует первоначальному:
WHERE (ActionTimeMark<=#9/10/2004 16:42:6#);
например что будет если дата окажется меньше чем #9/10/2004#, а время больше чем #20:44:58# ???
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c