Java - сравнить дату, представленную через форму с датой, хранящейся в MySQL DB - Как? - PullRequest
2 голосов
/ 13 марта 2012

Я создаю пользовательский онлайн-интерфейс. Страница jsp имеет форму, в которой пользователь может выбрать дату в календаре (сделанную с помощью JavaScript), а также указать точное время, когда будет происходить событие.

Мой сервлет читает данные формы, которые в итоге будут выглядеть так:
Дата: 2012-МАР-12
Время: 7:00 вечера.

День и время должны быть сохранены в таблице базы данных mysql. Я установил для столбца тип DATETIME.

Я хочу взять значения даты в этом столбце, сравнить их с «текущей датой + 30 минут» и показать только события, соответствующие этому критерию.

1) Как преобразовать строковые значения даты и времени, отправленные из формы, в значение DATETIME для хранения в базе данных?

2) Как сравнить эти записи даты / времени в БД с текущей датой и временем?

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Для преобразования строки в дату вы можете использовать класс SimpleDateFormat .В нем есть несколько встроенных методов для преобразования строк в даты в различных форматах.

Например:

    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MMM-dd");
    Date mydate = fmt.parse("2012-Mar-04", 0);

Теперь вы можете использовать mydate для сравнения с датой в MySQL.

По второму вопросу вы можете узнать текущее системное время, создав новую дату.

    Date now = new Date();

Затем используйте ее для сравнения даты в таблице MySQL с простым оператором SQL.Я предполагаю, что вы используете какой-то оператор Prepared.

   PreparedStatement currentEvents = con.prepareStatement("Select * from mytable where thedate = ?");
   currentEvents.setDate(1, mydate);
   result = currentEvents.executeQuery();

, где con - ваше соединение и т. Д. ...

0 голосов
/ 13 марта 2012

Чтобы проанализировать ваш ввод, используйте этот код:

String dateInput = "2012-MAR-12";
String timeInput = "7:00 p.m.";

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-ddh:mm a");
String s = dateInput + timeInput.replace(".", ""); // must remove the dots
Date d = f.parse(s);

Когда у вас есть своя дата, вы можете использовать ее напрямую через JDBC. Я бы сделал все сравнения дат в вашем запросе. Я не понимаю, что вы пытаетесь сделать, но попробуйте что-то вроде этого:

select * from table where datetime_col between ? and adddate(?, interval 30 minutes)

Передайте объект данных дважды как параметры для вашего вызова JDBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...