我正在使用续集插入并从SQL Server 2014数据库中获取日期。输入数据库的日期是正确的,问题出在退货总是少一天。
示例:
29/04/1988
到1988-04-29
并保存到SQL Server 1988-04-28
sequelize模型中的方法:
birthday: {
get () {
if (this.getDataValue('birthday')) {
return moment(this.getDataValue('birthday')).format('DD/MM/YYYY')
}
},
set (val) {
if (!val) return
this.setDataValue('birthday', moment(val, 'DD/MM/YYYY').toDate())
},
type: DataTypes.DATEONLY,
allowNull: false,
defaultValue: '9999-12-31'
},
即使从顺序返回日期中删除get方法仍要少一天,我相信这可能是时区问题,因为数据库位于aws弗吉尼亚州,而且我在巴西,但是我不知道如何要解决,有人在不同的时区遇到过类似于sequelize和SQL Server的问题吗?
更新:
使用DATE类型可以很好地解决问题,但是使用DATEONLY可以解决此问题,因为github中的其他报告可能是后遗症。
该解决方案采用了SQL Server。
这样,就可以使用时间格式正确检索记录的日期。
birthday: {
get () {
if (this.getDataValue('birthday')) {
return moment(this.getDataValue('birthday')).format('DD/MM/YYYY')
}
},
set (val) {
if (!val) return
this.setDataValue('birthday', moment(val, 'DD/MM/YYYY HH:mm:ss a').toDate())
},
type: DataTypes.DATE,
allowNull: false,
defaultValue: '9999-12-31 00:00:00.000'
},
例如: