Witam,
Mam problem z uzyskaniem poprawnych wyników poniższego zapytania wykonywanego w Javie.
ResultSet rs = getResultStatement("SELECT * FROM MECZ WHERE CAST(DATA_ROZPOCZECIA AS DATE) = '" + matchDate.toLocalDateTime().toLocalDate() + "'");
DATA_ROZPOCZECIA jest typu TIMESTAMP(0), a matchDate to java.sql.Timestamp. Kod nie generuje żadnych błędów, natomiast występuje tutaj problem z porównywaniem dat. Mianowicie nie po wykonaniu tego zapytania nie są znajdywane daty identyczne do tej, która jest w zmiennej matchDate, chociaż istnieją one w bazie. Po wykonaniu zapytania:
rs = getResultStatement("SELECT CAST(DATA_ROZPOCZECIA AS DATE) FROM MECZ");
oraz po wypisaniu wyników w konsoli pojawia się:
2017-01-21
2017-01-21
2017-01-21
Po wypisaniu wyniku następującego kodu:
matchDate.toLocalDateTime().toLocalDate()
Wyświetla się:
2017-01-21
Dodam, że gdy zmienię znak porównania na ">" w pierwszym zapytaniu, to znajduje mi powyższe dane.
Jakie mogą być przyczyny takiego zachowania? Dlaczego zapytanie nie znajduje danych, które są identyczne z danymi porównywanymi?
Z góry dziękuję za pomoc!