| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Как сравнить с датой |
| Автор: Zero 12.4.2005, 17:28 | ||
| Мне нужен только пример. Пусть есть таблица в которой один атрибут, с типом дата/время. Скажите как создать запрос чтобы, по определённой дате вывести строку с этой датой, а то когда я пишу так:
то ни хрена не правильно выводится. Точнее сказать ничего не выводится, а дата в точности совпадает с той которая у меня в таблице. Добавлено @ 17:31 Работаю в MS Access. Интересно кого в эту фирму только не понабрали. |
| Автор: SPrograMMer 12.4.2005, 17:44 |
| Zero, дату заключай в апострофы. Да и отдельно от веремени, хотя с Access`ом я не работал, может и вместе усё моно. |
| Автор: Zero 13.4.2005, 07:35 | ||
Вот именно. Добавлено @ 07:35 Короче апострофу однозначно не подходят. |
| Автор: DimW 13.4.2005, 07:58 |
| Zero- как я тебя понимаю... ты наткнулся на тот камень на который я наткнулся года 1,5 назад... как можно избежать таких проблем в будушем: тип датавремя в БД (Access) можно представить как тип Real- 02540,215 где челая часть это дата, а дробная время. в своей таблице, для даты создаешь поле типа int, а записывать будешь так: Table1.insert; Table1.FieldByName('My_Date').AsInteger:=Trunc(Real(Date)); Table1.Post; а извлекать так: var st:string; ------------------ st:=DateToStr(Date(Table1.FieldByName('My_Date').AsFloat)); согласись как будет удобно писать такой запрос: SELECT Дата FROM Таблица1 WHERE Дата=10254; Ну а записать вместо даты(int) время(Real), думаю тебе не составит труда. |
| Автор: Dimich 13.4.2005, 10:01 | ||
Интересно, а если выполнить так:
Он выберет чего нибудь? З.Ы. Просьба не считать это методом решения, просто мне интересно знать. |
| Автор: Zero 13.4.2005, 14:11 | ||
Не вывел, ни чего. DimW я конечно тоже люблю изобретать велосипеды, точнее часто приходится это делать, но как таковую проблему я решил другим способом, за место даты я сравнивал с одновременно 2-мя другими полями, и результат вроде тот же. А этот вопрос у меня просто остался не завершённым, и я хотел бы узнать обьяснения от того кто понимает причину по которой происходит такая штука. И как непосредственно нужно сравнивать с датой. А на счёт замены типа дата время полями (int, real) мне кажется это не лучший способ, ИМХО проще будет текстовый тип использовать, ом и понятнее будет. И кстати, как это ты интересно представляешь вот такое число 02540,215 в виде даты? Я когда читал про типы, то помню там было написано, что он представляется вещественным числом, а потом каким-то алгоритмом переводится во время, тока там алгоритм перевода (в Фаронове) не был приведён. |
| Автор: DDX 13.4.2005, 14:33 | ||
| Zero вот сейчас в акцессе попробовал:
ищет вообще без проблем, тип поля field2 - DateTime, ищет на ура З.ы. ты уверен, что ищешь дату за 2006 год? (ну, так, уточнил) это ищет в самом access, щас попробую в дельфях WinXP SP 2, Access 2003, D6 |
| Автор: Zero 13.4.2005, 14:59 | ||
| Теперь всё нормально. Спасибо DDX, всё тут я понял.
|
| Автор: DimW 13.4.2005, 15:16 | ||||||
Туда и обратно:
ды както некрасиво с текстовым полем делать операции типа BETWEEN, <=, >=, <, >!!!! |
| Автор: DDX 13.4.2005, 15:54 | ||||
у тебя и там, и там 4 |
| Автор: Zero 13.4.2005, 20:34 | ||
Блин, да хрен её знает... У меня всегда так бывает, что когда сам что-нибудь делаю то не работает, а когда кто-нибудь, что-нибудь покажет, то заработает. А прикинь какая фигня DDX, только что попробывал свой код который вначале был воткнуть, и теперь всё работает, а да этого когда писал не работало... |
| Автор: offline 14.4.2005, 00:35 |
| Я однажды тоже с датами парился. ввожу даьу в Access все работает, а ввожу ее через запрос в Delphi так итог такой, что этой даты нет. Пришлось выкручиваться следуюшим образом, может пригодиться. В запросе поле даты менял на строковую переменную (WHERE Str([Date])='01.12.3000'), а затем уже подсовыват данные не как дата, а как обыкновенная строка и все работало отлично |
| Автор: Guest 14.4.2005, 11:33 |
| Zero бывает.. |
| Автор: DDX 14.4.2005, 18:08 |
| Zero бывает |
| Автор: Medved 15.4.2005, 00:52 |
| Для передачи значений в SQL запрос рекомендуется использовать параметры, Они для этого и существуют. |
| Автор: Петрович 15.4.2005, 02:35 | ||
Во во. И нечего мозги себе засорять знаниями о том как в какой БД дата записывается В общем, почитайте это http://vingrad.ru/DELPHI-DLP-001424 и это: http://forum.vingrad.ru/index.php?showtopic=36288&st=0entry272402 |