最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何连续使用数据库时区获取当前日期时间

IT培训 admin 5浏览 0评论

如何连续使用数据库时区获取当前日期/时间

我需要使用Sequelize根据数据库时区(不是我的本地时区,也不是默认的UTC时区)获取当前时间。是否有一种Sequelize方法可以做到这一点?

我的数据库是东部时间,当我直接查询数据库SELECT CURRENT_TIMESTAMP;时,它将返回东部时间的日期/时间(正确)。

但是当我在节点const [[{time}]] = await db.sequelize.query('SELECT CURRENT_TIMESTAMP AS time');中通过Sequelize查询时,它将以UTC返回日期/时间。

两个问题:

1-我更喜欢使用Sequelize方法而不是原始查询。

2-这仍然无法获得我想要的结果。时间应该是东部时间。

这是我的数据库设置:

const sequelize = new Sequelize(dbUrl, {
  dialectOptions: {
    useUTC: false // for reading from database
  },
  timezone: '-04:00', // for writing to database
  define: {
    charset: 'utf8'
  }
})

如上所述,当我使用上述查询进行查询时,给定的日期总是以UTC返回,这并不是我所期望的,因为我说的是useUTC: false。如何在东部时间(数据库时区)获取它?

回答如下:
  1. 我不知道像getCurrentDate()这样的续集方法。

  2. UTC转换问题似乎困扰着每个人(包括我自己)。 Here一些细节。不知道dialectOptions: {useUTC: false },是否完全具有any功能-只需添加typeCast方法即可为我解决问题。

      dialectOptions: {
        typeCast: function (field, next) { // for reading from database
          if (field.type === 'DATETIME') {
            return field.string()
          }
          return next()
      },
    

结果可用于新的js Date对象:

const sql = 'select current_timestamp';
my_app.my_DB.query(sql, {raw: true, type: Sequelize.QueryTypes.SELECT})
    .then(data => {
        console.log(data[0].current_timestamp);
        let d1 = new Date(data[0].current_timestamp);
    });

这对我来说很好-但请确保进行彻底测试!

如何连续使用数据库时区获取当前日期/时间

我需要使用Sequelize根据数据库时区(不是我的本地时区,也不是默认的UTC时区)获取当前时间。是否有一种Sequelize方法可以做到这一点?

我的数据库是东部时间,当我直接查询数据库SELECT CURRENT_TIMESTAMP;时,它将返回东部时间的日期/时间(正确)。

但是当我在节点const [[{time}]] = await db.sequelize.query('SELECT CURRENT_TIMESTAMP AS time');中通过Sequelize查询时,它将以UTC返回日期/时间。

两个问题:

1-我更喜欢使用Sequelize方法而不是原始查询。

2-这仍然无法获得我想要的结果。时间应该是东部时间。

这是我的数据库设置:

const sequelize = new Sequelize(dbUrl, {
  dialectOptions: {
    useUTC: false // for reading from database
  },
  timezone: '-04:00', // for writing to database
  define: {
    charset: 'utf8'
  }
})

如上所述,当我使用上述查询进行查询时,给定的日期总是以UTC返回,这并不是我所期望的,因为我说的是useUTC: false。如何在东部时间(数据库时区)获取它?

回答如下:
  1. 我不知道像getCurrentDate()这样的续集方法。

  2. UTC转换问题似乎困扰着每个人(包括我自己)。 Here一些细节。不知道dialectOptions: {useUTC: false },是否完全具有any功能-只需添加typeCast方法即可为我解决问题。

      dialectOptions: {
        typeCast: function (field, next) { // for reading from database
          if (field.type === 'DATETIME') {
            return field.string()
          }
          return next()
      },
    

结果可用于新的js Date对象:

const sql = 'select current_timestamp';
my_app.my_DB.query(sql, {raw: true, type: Sequelize.QueryTypes.SELECT})
    .then(data => {
        console.log(data[0].current_timestamp);
        let d1 = new Date(data[0].current_timestamp);
    });

这对我来说很好-但请确保进行彻底测试!

发布评论

评论列表 (0)

  1. 暂无评论