| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > DateBase и тип Date |
| Автор: German 3.11.2002, 21:19 | ||
| В базе есть поле Date типа Date. Как произвести отбор по этим датам допустим с 09.10.2002 по 09.11.2002 пример кода:
результат параметры можно задовать вида хх.хх и даже при этом ни какого результата только куча ошибок!!! |
| Автор: Medved 4.11.2002, 00:11 |
| А не проще ли использовать простейший SQL запрос? Если же надо TTable то отфильтруй значения через TTable.Filter (хотя фильтровку не рекомендую). Или я чего-то непонимаю? |
| Автор: Medved 4.11.2002, 00:21 |
| Или используй метод SetRange (он объединяет в себе все три метода SetRangeStart, SetRangeEnd и ApplyRange) Хотя я тебе не рекомендую осуществлять фильтрация по индескным полям... И еще одна заметка, фильтрация методами ApplyRange/SetRange должна производиться только по ключевым полям. Хотя у тебя это и предусмотрено, но возможно здесь у тебя какая-то загвозтка. |
| Автор: German 7.11.2002, 20:02 | ||
Я скуел не знаю |
| Автор: Vit 7.11.2002, 22:57 | ||
Далее работаешь с Query1 так как если бы это была таблица. Код писал на вскидку так что могут быть мелкие опечатки |
| Автор: Vit 7.11.2002, 23:00 |
| В твоём коде ошибка здесь: Table1date.AsDateTime:=11.11; Компилятор интерпретирует 11.11 как "11 целых 11 сотых". Тип TDateTime - это тип real, где целая часть количество дней прошедших с 1 января 1899 года, а дробная часть - это время... |
| Автор: German 12.11.2002, 08:50 |
| Сенькью веримач |
| Автор: Cashey 14.11.2002, 03:31 |
| Вот простой SQL код: SELECT Date from TableName where beetwen '01/01/2002' and '31/01/2002' И ненадо мучится TQuery, запусти SQLBuilder |
| Автор: Vit 14.11.2002, 03:55 | ||
В этом коде 2 ошибки, точнее неточности, которые могут стать потенциальными ошибками, именно по этому я и привёл код с параметрами. Итак: 1) Не все SQL сервера понимают строки как нечто в одинарных кавычках, некоторые требуют двойных кавычек, некоторые сервера могут быть настроены на одинарные ил двойные кавычки. Если дату передавать как параметер, то конечную кверю будет строить сам сервер, и он поставит те кавычки, которые нужны. 2) Где гарантия что формат даты одинаковый на компьютере с программой и компьютере с базой данных? У меня может стоять на клиенте русская винда с русскими настройками и '2/9/2002' будет интерпретироваться как "2 сентября", а на компьютере с базой данных стоит регионарный стандарт для Америки и эта же дата будет означать "9 февраля". (Про разделители полей даты я уже молчу). В этом случае так же параметры работают корректнее - серверу передаётся дата, а он делает кверю в соответствии со своими регионарными стандартами. |
| Автор: Medved 15.11.2002, 08:29 | ||
В случае работы с Oracle ему без разницы... в нем, чтобы записать дату требуется следующее (по другому он не воспринимает):
|
| Автор: Medved 15.11.2002, 08:41 |
| блин, ошибка..... |
| Автор: Medved 15.11.2002, 08:42 | ||
в предыдущем коде ошибка, вот правильный:
|
| Автор: Vit 15.11.2002, 08:43 |
| Там клавиша Edit есть для таких случаев - отредактируй ответ, а потом остальные сотри, а то между 3мя ответами уже не теряется где-то правильный... |
| Автор: Medved 15.11.2002, 08:45 |
| уже выкрутился..... |