如何连续使用数据库时区获取当前日期/时间
我需要使用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
。如何在东部时间(数据库时区)获取它?
我不知道像getCurrentDate()这样的续集方法。
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
。如何在东部时间(数据库时区)获取它?
我不知道像getCurrentDate()这样的续集方法。
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);
});
这对我来说很好-但请确保进行彻底测试!