Mysql
 sql >> база данни >  >> RDS >> Mysql

дата час точно в приложението, но грешно в mysql [часова зона]

Какви са типовете колони в MySQL? Подозирам, че е DATETIME. Този тип не съхранява „момент във времето“, той съхранява „час на часовника“, така че може да означава различен момент в различни часови зони.

Когато драйверът на MySQL пише java.util.Date в колона DATETIME, той трябва да избере някаква часова зона, за да напише "час по часовник", тъй като един и същ java.util.Date може да означава различен час в различни часови зони. Той съхранява часа като в местната часова зона на MySQL сървър.

LocalDateTime няма този проблем, защото е като DATETIME. Той представлява час на часовник, а не момент във времето, поради което година/месец/ден-час/минута/секунда просто се съхраняват в базата данни. Забележете, че в журнала на хибернация LocalDateTime е даден такъв, какъвто е, докато има часова зона („CST“) до дата.

Като цяло е добра практика да съхранявате времето винаги в UTC, така че използвайте DateTime, а не Date или LocalDateTime. DateTime с конвертора на jadira винаги съхранява/чете DATETIME като UTC.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на заявка за вмъкване на редове в MySQL

  2. Преобразувайте Unix timestamp в четлива от човека дата с помощта на MySQL

  3. Не мога да се свържа с MySQL от Java:NullPointerException в логиката на свързване на драйвера на MySQL

  4. MySQL дава на редовете цял живот

  5. основно сравнение на датите за проверка на изтичане