【问题标题】:Timestamp insert giving wrong value时间戳插入给出错误值
【发布时间】:2019-09-10 11:11:10
【问题描述】:

我有一个可以进行简单插入的应用程序:

这是我在 sequelize 中的配置

const options = {
      operatorsAliases: false,
      dialect: tenants.db_username,
      host: tenants.db_host,
      logging: false,
      dialectOptions: {
        useUTC: true,
      },
      timezone: 'America/Sao_Paulo',
    };
    const databaseConfig = {
      db: {
        database: tenants.db_name,
        user: tenants.db_username,
        password: tenants.db_password,
        options,
        pool: {
          max: 5,
          min: 0,
          acquire: 30000,
          idle: 10000,
        },
      },
    };

当我插入时,我使用 log 来获取由 Sequelize 生成的命令,这是命令:

INSERT INTO "table_teste" ("action_id","action_lat","action_long","action_time","action_type","action_obs","createdAt","updatedAt","user_id") VALUES (DEFAULT,13123123,413134,'2019-09-09 16:40:31.000 -03:00','ENTRADA','','2019-09-09 16:41:13.237 -03:00','2019-09-09 16:41:13.237 -03:00',2) RETURNING *;

此处显示的时间 2019-09-09 16:40:31.000 是正确的,但是当从 Postgres 运行时,我的数据库插入了一个错误的时间,例如 2019- 09-09 19:40:31+00

刚刚发生了一个奇怪的行为,我设法从选择中删除了时区,现在我的日志显示了这个

INSERT INTO "table_teste" ("action_id","action_lat","action_long","action_time","action_type","action_obs","createdAt","updatedAt","user_id") VALUES (DEFAULT,2311321233,12323,'2019-09-09 19:21:14.000','ENTRADA','','2019-09-09 19:21:15.683','2019-09-09 19:21:15.683',2) RETURNING *;

如果我在 Postgres pgadmin4 中从我的 SQL 执行它,它可以正常工作,但如果我使用 Sequelize 他们给我一个错误的日期,为什么?

【问题讨论】:

  • 您的时间戳是存储为带时区的时间戳还是不带时区的时间戳?
  • Sequelize 不允许我在自动生成的 createdAt 和 updatedAt 列中创建没有时区类型的时间戳。我像这样发送我的日期 2019-09-09 16:40:31
  • 没人能帮我吗?

标签: node.js postgresql sequelize.js


【解决方案1】:

所有timestamp with time zone 值都根据您使用timezone 配置参数设置的会话时区显示。

此值也用于解释没有时区的时间戳。

由于您的会话时区似乎是UTC 或等效的,2019-09-09 16:41:13.237 -03:00 显示为2019-09-09 19:41:13.237 00:00。没关系,因为那是同一个时间戳。

PostgreSQL 不使用timestamp with time zone 存储时区:该值被解释并存储为 UTC 中的绝对时间戳,并在显示时转换为正确的会话时区。

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多