Мой класс Java (сервлет) работает нормально, но недавно я заметил проблему.
В моей базе данных есть столбец «Дата» с именем «Full_Expiration_Date». Если он был введен, он будет сохранен как «2010-11-17». Если никто не вошел, это сохраняет его как «0000-00-00».
В моем классе я вызываю записи из базы данных и просматриваю поле 'Full_Expiration_Date', чтобы узнать, есть ли у него дата или нет. Если это произойдет, я выполню несколько строк кода, которые проверяют, не до сегодняшней даты, и если дата НЕ сегодняшняя дата - если оба эти условия выполнены, купон истек.
Таким образом, мой код работает нормально, если указана дата истечения срока действия, но не работает, когда в поле указано «0000-00-00».
Я генерирую массив информации для каждого купона в таблице БД. После завершения проверки и заполнения массива он отправляется в качестве атрибута запроса.
Вот фрагмент моего кода для этого процесса -
rs = stmt.executeQuery("select Full_Expiration_Date from coupons");
//will hold value from "Full_Expiration_Date" field in db
java.sql.Date expirationDate = null;
//today's date - used for comparison
java.util.Date today = new java.util.Date();
while(rs.next()) {
//get expiration date from db for this record
expirationDate = rs.getDate(12);
if(expirationDate == null) { //should be if the field is 0000-00-00, right?
//don't do any checking against
//expiration date, this record
//doesn't have one
couponList[counter][11] = "";
} else { //10
if(expirationDate.before(today) & !today.equals(expirationDate)) {
couponList[counter][11] = "expired";
} else { //11
couponList[counter][11] = "";
}//if
}//if
counter++;
}//while
Может кто-то точно определить, что я здесь делаю не так? После тестирования я уверен, что это связано с тем, что это поле «0000-00-00».