【问题标题】:Date stored in database and date fetched from database differes存储在数据库中的日期和从数据库中获取的数据不同
【发布时间】:2020-08-25 04:11:17
【问题描述】:

在数据库中,表格->日期列显示正确的日期和时间。

在数据库表列中:

2020-08-25 04:00:32.217609

但是当我获取相同的日期时,它显示的正是 24 小时前的日期和时间。

从数据库中获取:

2020-08-24T16:00:32.217Z

我认为这与本地时区有关,而且获取时的格式也不同。我正在尝试了解问题,然后寻找解决方案。

注意:我正在使用 typeorm queryBuilder 获取数据。

【问题讨论】:

  • 不是 24 小时,而是 12 小时。所以确定它可能是时区。表结构是什么(show create table {tablename})?您的 orm 查询构建器可以显示检索到的内容吗? (可能暂时启用Mysql通用查询日志)?
  • 你在新西兰吗?
  • @danblack 实际上是 24 小时,因为数据库值以 12 小时时间显示,而获取的值以 24 小时时间格式显示。您可以看到我刚刚在帖子顶部添加的那一列的结构。是的,我已经回复了查询,并显示了 2020-08-24T16:00:32.217Z
  • @Schwern:是的!!
  • 列数据类型为DATETIME(6)。此数据类型不包含时区信息,并且不会隐式地将时区转换应用于数据。使用 CLI 检索值 - 您必须获得等于已保存值的值。这可能是客户端软件“服务”的影响。

标签: mysql angular date typeorm


【解决方案1】:

是的,它们在不同时区的时间相同。第一个是您当地的时区(新西兰标准时间),比 UTC 早 12 小时。第二个末尾的Z 表示它是UTC,比你晚12 小时。

另一个区别在于小数秒。您的数据库以微秒为单位存储。您的程序以毫秒为单位存储,或仅显示毫秒。

【讨论】:

  • 现在该做什么:)
  • @DLV 使用获取的结果。大概是一个Date 对象。
  • 我只使用获取的结果......我没有得到你!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多