【问题标题】:Change date after add calendar to database将日历添加到数据库后更改日期
【发布时间】:2019-09-15 00:30:35
【问题描述】:

当我尝试向我的数据库应用程序添加新的时间条目时,第一天被更改并破坏了层次结构。我一周的前两天发生了变化。

我尝试将时区从 CET 更改为 UTC 和 CEST

当我在数据库退货中发布 25 至 31 天的天数时:

2019-03-25
2019-03-25
2019-03-27
2019-03-28
2019-03-29
2019-03-30
2019-03-31

但接下来当我使用邮递员获取本周时,它会返回:

{

    "day": "SUNDAY",
    "date": "2019-03-24",
    "hours": 0,
    "status": "SAVED",
    "comment": ""
},
{
    "day": "SUNDAY",
    "date": "2019-03-24",
    "hours": 5,
    "status": "REJECTED",
    "comment": ""
},
{
    "day": "MONDAY",
    "date": "2019-03-25",
    "hours": 9,
    "status": "REJECTED",
    "comment": ""
},
{
    "day": "TUESDAY",
    "date": "2019-03-26",
    "hours": 9,
    "status": "SAVED",
    "comment": ""
},
{
    "day": "WEDNESDAY",
    "date": "2019-03-27",
    "hours": 9,
    "status": "SAVED",
    "comment": ""
},
{
    "day": "THURSDAY",
    "date": "2019-03-28",
    "hours": 9,
    "status": "SAVED",
    "comment": ""
},
{
    "day": "FRIDAY",
    "date": "2019-03-29",
    "hours": 9,
    "status": "SAVED",
    "comment": ""
}

我的数据库驱动是:

DATABASE_URL=jdbc:mysql://localhost:3306/restdb?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=CET

【问题讨论】:

  • 您好,您的问题在这里恐怕不是很清楚。
  • 我可以添加我使用 docker 也许 docker 设置或 db 设置有其他时区配置,但也许有人解决了这个问题

标签: java mysql date docker


【解决方案1】:

使用正确的数据类型。

DATE

在 MySQL 中,表列的类型应为 DATE

此类型类似于 SQL 标准类型 DATE,用于无时间和无时区的仅日期值。

LocalDate

将您的日期字符串值作为LocalDate 检索,正如 Stack Overflow 上已多次显示的那样。

LocalDate 类没有时区,因此您应该看不到任何调整。

LocalDate.parse( "2019-01-23" )

或者:

LocalDate ld = myResultSet.getObject( date_col , LocalDate.class ) ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多