亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在續集中使用數據庫時區獲取當前日期/時間

如何在續集中使用數據庫時區獲取當前日期/時間

慕斯709654 2021-11-04 10:37:44
我需要根據數據庫時區(不是我的本地時區,也不是默認的 UTC 時區)使用 Sequelize 獲取當前時間。是否有 Sequelize 方法來做到這一點?我的數據庫是東部時間,當我直接查詢數據庫時,SELECT CURRENT_TIMESTAMP;它返回東部時間的日期/時間(這是正確的)。但是當我通過 Node 中的 Sequelize 查詢時,const [[{time}]] = await db.sequelize.query('SELECT CURRENT_TIMESTAMP AS time');它會以 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. 如何在東部時間(數據庫時區)獲取它?
查看完整描述

2 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

我不知道像 getCurrentDate() 這樣的續集方法。


UTC 轉換問題似乎困擾著所有人(包括我自己)。 這里有一些細節。不確定是否 dialectOptions: {useUTC: false },有任何功能 - 只需添加 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);

    });

這對我來說很好用 - 但一定要徹底測試!


查看完整回答
反對 回復 2021-11-04
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

像這樣添加useUTC屬性dialectOptions


dialectOptions: {

    encrypt: false ,

    options: {

        useUTC: false, // for reading from database

    },

},


查看完整回答
反對 回復 2021-11-04
  • 2 回答
  • 0 關注
  • 239 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號