Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 00:42   #1
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию Сравнение времени и даты

Есть база, в ней 2 поля дата и время ,типы соответственно date и time. Нужно если дата и время с базы совпадают с датой и временем на компе выводить сообщение. На первый взгляд ничего сложного.
Делаю запрос
select * from table where date= datetostr(now) and time= timetostr(now)
с датой все нормально все проверяет, но вот с веремнем напряг.

Время проверяется с точностью с секундами.
(Т е в базе время идет как 15.03.00)
Можно ли чтобы секунды никак не учитывались? Не в базе не в текущем(now) времени. Или подскажите если есть более правельные и оптимальные варианты. Заранее благодарен
Mr_skiner вне форума Ответить с цитированием
Старый 24.05.2011, 08:32   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) зачем Вы переводите дату и время в строку?!! (т.е. функции DateToStr и TimeToStr - это лишний повод для глюков... Используйте параметрический запрос!

2) есть такие функции DecodeTime / EncodeTime (пишу по памяти, могу опечататься, но смысл такой). Которые из DateTime вытаскивают часы, минуты, секунды, и доли секунд...
вытаскивайте. Потом кодируйте с нулевыми секундами/долями секунды....
или, если у Вас нормальная СУБД - то у неё есть функции работы со временем.
Значит можно в запросе вытащить часы, минуты и секунды и сравнить..
например, так:
Код:
select * from table 
    where date_BD = :pMyDate 
       and extract(hour from time_BD) = :pMyHour
       and extract(MINUTE from time_BD) = :pMyMinute
       and extract(SECOND from time_BD) = :pMySeconds   /* последнюю строчку можно убрать, чтобы секунды не учитывались */
3) "попасть" в точное время ОЧЕНЬ сложно! Поэтому рекомендую проверять не совпадение с точным временен а то, что разница между вашим временен в БД и временем на компьютере меньше какой-то малой величины (ну, например, менее 3 секунд, или 30 секунд... или менее одной минуты - смотря как часто Вы собираетесь "дёргать" данный запрос...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.05.2011, 18:40   #3
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию

так я вот и хотел отбросить секунды чтобы он тоько до минут сравнивал, Спасибо, буду пробывать
Mr_skiner вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение форматов даты artemavd БД в Delphi 8 13.10.2010 04:46
Автоматизация заполнения даты и зависимость ячейки времени к ячейке даты. Каравай Microsoft Office Excel 14 11.03.2010 18:11
Вывод даты и времени. mephist Microsoft Office Excel 2 12.08.2009 10:44
Сравнение времени POX Общие вопросы Delphi 10 01.07.2009 08:27
Сравнение даты и времени Altera Общие вопросы Delphi 2 03.10.2008 09:52