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

Несъответствие между стойностите за DATETIME в базите данни H2 и MySQL, вмъкнати от Java/Kotlin

Така че изглежда, че корекцията беше да се зададе UTC часова зона за JDBC връзката (вместо JVM):

spring.jpa.properties.hibernate.jdbc.time_zone=UTC

и разчита на използването на Instant за запазване на стойността от страна на Java и с created_at поле с тип DATETIME в MySQL и H2.

Съкратеният резултат на kotlin код е:

@Entity
data class SomeEntity(
    val createdAt: Instant = Instant.now() // default created date is current UTC time
)

val dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd H:mm:ss")

createdAt = LocalDateTime.parse("2012-11-30 16:13:21", dateTimeFormatter).toInstant(ZoneOffset.UTC)

Идеи, взети от коментари на „Joop Eggen“, това и това статия.

Бонус

Предполагам, че ако четете това, може да се нуждаете и от помощ при отстраняване на грешки в SQL заявки.

1. За да отпечатате SQL заявки, изпълнявани на H2, добавете TRACE_LEVEL_FILE=2 и TRACE_LEVEL_SYSTEM_OUT=2 към низ за връзка (вижте тук ):

spring.datasource.url=jdbc:h2:mem:dbname;TRACE_LEVEL_FILE=2;TRACE_LEVEL_SYSTEM_OUT=2;

2. За да активирате дневниците за хибернация:

spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.type=TRACE

3. За да активирате регистрационните файлове на заявки в MySQL (един от подходите, не използвайте в производствена база данни!):

SET GLOBAL general_log = 'ON';
SET global log_output = 'table';
select * from mysql.general_log ORDER BY event_time DESC;



  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 REGEXP за съвпадение на два низа, разделени със запетая

  2. Mysql изберете Заявка с множество условия от една и съща колона

  3. Как да изчислим дните между две дати в PHP?

  4. Датата на PHP/Mysql е запазена като '0000-00-00'

  5. brew install mysql, грешка при опит за спиране на сървъра