powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сравнение дат
9 сообщений из 9, страница 1 из 1
Сравнение дат
    #33353701
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема такая.
В базе ms sql 7.0 в поле date_n (тип datetime), хранится дата
вида: 31.10.2005 13:49:00
Пытаюсь реализовать таймер,создаю класс MyTimerTask который extends TimerTask,
в этом классе есть sql запрос, который вытягивает из базы дату date_n и сравнивает ее с
датой new Date(); и так должно происходить до тех пор,пока даты не совпадут,после совпадения
таймер останавливается.
Делаю так:
Код: plaintext
1.
2.
3.
4.
    Дата из базы:
 ResultSet rs=st.executeQuery("select convert(datetime,convert(varchar(20),date_n,103),103)  from LeafCategory where name_leaf="+"'"+ob.LEAF.toString().substring(0,start).trim()+"'");
                rs.next();
                datefromBD=rs.getDate( 1 );
Текущая дата:
Код: plaintext
1.
  Date now= new  Date();

Вся проблема в том, что они не совпадают,т.е. я никак не могу попасть в это условие:
Код: plaintext
1.
2.
3.
     if (now.getTime()==datefromBD.getTime()){
JOptionPane.showMessageDialog( null , "Событие:\n "+getContentEvent(), "Внимание", JOptionPane.INFORMATION_MESSAGE);
      }
Прошу помощи?
Спасибо.
...
Рейтинг: 0 / 0
Сравнение дат
    #33353728
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636
Вся проблема в том, что они не совпадают,т.е. я никак не могу попасть в это условие:
Код: plaintext
1.
2.
3.
   if  (now.getTime() == datefromBD.getTime()) {
    JOptionPane.showMessageDialog( null , "Событие:\n "+getContentEvent(), "Внимание", JOptionPane.INFORMATION_MESSAGE);
  }


а если
Код: plaintext
1.
2.
3.
 if  (now.getTime() >= datefromBD.getTime()) {
...
}
...
Рейтинг: 0 / 0
Сравнение дат
    #33353731
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а разве getTime не возвращает милисекунды с какого-то там года?
...
Рейтинг: 0 / 0
Сравнение дат
    #33353742
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Naugа разве getTime не возвращает милисекунды с какого-то там года?возвращает
...
Рейтинг: 0 / 0
Сравнение дат
    #33353756
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та дата, которая из запроса, округлена до нуля часов, видать, в этом и смысл всех этих преобразований. Попробуй:
Код: plaintext
select convert(datetime,convert(varchar( 20 ),getdate(), 103 ), 103 )
А "текущая дата" берется с часами, минутами и т.д. Потому и не совпадает.

Почему бы не передавать текущую дату параметром запроса и получать уже только требуемые записи, безо всяких циклов в приложении?
...
Рейтинг: 0 / 0
Сравнение дат
    #33353778
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то биш дата слишком точная по сравнению с "31.10.2005 13:49:00" и они совпадут только если запрос выполняется каждую милисекунду.
...
Рейтинг: 0 / 0
Сравнение дат
    #33355131
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь делаю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
     PreparedStatement st=con.getConnection().prepareStatement("select name_leaf,date_n from LeafCategory where date_n=?");
                 Timestamp ts2 =  new  Timestamp( new  Date().getTime());
                 st.setTimestamp( 1 ,ts2);
            ResultSet rs=st.executeQuery();
                 while (rs.next()){
                   NAME=rs.getString( 1 );
                   datefromBD=rs.getDate( 2 );
                }
                 if (!NAME.equals("")&&datefromBD!= null ){
                        // Тут у меня должно выскакивать окно с сообщением  
                     }
И все равно не получаю нужного результата,может я че-то с
этим намутил:
Код: plaintext
1.
 time.scheduleAtFixedRate( new  MyTimerTask( this ,flag), 100 , 100 );

По идее через каждую секунду он опрашивает, но у меня такое чувство, что
время через которое запускается time.scheduleAtFixedRate(new MyTimerTask(this,flag),100,100);
не совпадает с временем в базе, или хр. его знает.
Спасибо.
...
Рейтинг: 0 / 0
Сравнение дат
    #33355170
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636
Код: plaintext
1.
 time.scheduleAtFixedRate( new  MyTimerTask( this ,flag), 100 , 100 );

По идее через каждую секунду он опрашивает
http://www.sql.ru/forum/actualthread.aspx?tid=230751#2024432

PS а не каждую десятую секунды?
...
Рейтинг: 0 / 0
Сравнение дат
    #33355190
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с >= не подходит, т.к.
окно с выводом сообщения будет выскакивать постоянно,а чтобы оно не
выскакивало, мне нужно останавливать таймер,а остановить не могу т.к. сообщений
может быть много,и в таком случае при остановке не все будут прочитаны
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сравнение дат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]