Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pola Jooq LocalDateTime używają strefy czasowej systemu zamiast strefy czasowej sesji

Niedawno odkryłem, że w zależności od używanego sterownika bazy danych, jOOQ może wykazywać dziwne zachowanie podczas parsowania DateTime. jOOQ zwraca datę przesunięcia jako Z (UTC), mimo że tak nie jest

W szczególności w moim przypadku użycie innego sterownika Postgres spowodowało, że DefaultBinding.java otrzymał obiekt kalendarza, który ma znacznik czasu, ale wywołał na nim toString w celu przetworzenia. Okazuje się, że toString nie wypisuje strefy czasowej, a następnie jOOQ wywnioskował, że była to strefa czasowa.

Dla mnie obraźliwe wiersze w DefaultBinding.java (użyłem znacznika czasu ze strefą czasową):

else if (type == OffsetDateTime.class) {
    result = (T) offsetDateTime(ctx.resultSet().getString(ctx.index()));
}

Możesz być na innej linii w tej serii else ifs ze względu na brak strefy czasowej.

Podczas moich testów odkryłem również, że zmiana czasu systemowego zmieniła wynik, ale zmiana czasu sesji nic nie dała.

Na szczęście dla mnie przejście na standardowy sterownik Postgresa rozwiązało problem. Jeśli tak się nie stanie, zamierzałem przyjrzeć się przeciążeniu powiązania dla OffsetDateTime, aby naprawić użycie toString i skojarzone z nim usuwanie odpowiedniej strefy czasowej. Być może będziesz musiał podążać tą ścieżką, niestety, chyba że używasz sterownika SQL, który mógłby zostać uaktualniony lub zastąpiony. Możesz też zapisać go ze strefą czasową, a następnie przekonwertować na żądaną strefę czasową podczas ładowania z bazy danych.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL-Query potrzebne do znalezienia różnych identyfikatorów prawdopodobnie przy użyciu IN i NOT IN

  2. Używanie Boto3 do interakcji z amazon Aurora na RDS

  3. Windows:XAMPP vs WampServer vs EasyPHP vs alternatywa

  4. Błąd:Nieznana kolumna „” na „liście pól” Błąd MySQL

  5. Jak dodać kolumnę automatycznego przyrostu w istniejącej tabeli w MySQL?