Mongo中时间跟实际时间相差8小时?


  • 註冊用戶

    Mongo中一个Collection有一个字段用来存放数据的插入时间,但记录的时间比实际时间晚了8小时。

    查询得知存储在mongodb中的时间是标准时间UTC +0:00,而中国时区是+8.00,

    请问有什么办法保证Collection中的插入时间和实际时间一致吗?


  • 註冊用戶

    應該要在應用層處理這個問題比較好,資料庫裡面都統一存 UTC 這樣才不會造成跨時區用戶插入資料的時間差異,多加一個 Timezone 欄位來克服。


  • 註冊用戶

    的確是使用 kevinl 回覆的方式,不僅是MongoDB可以這樣處理,在其他類型的資料庫也適用


  • Lv 1

    存 timestamp 也不錯.. 不過也是要依據時區轉



  • kevinl说的对。其实,任何资料库都会出现这个问题,不单指MongoDB。一般都在应用程序处理。


  • 註冊用戶

    這東西在 Linux 上系統時區設定能不能解決?至少在 mysql上不是可以校正嗎?


  • Lv 1

    @Jerry

    一般單筆的處理在前端作比較適合,mongoDB的driver幾乎都有提供這樣的方法

    如果要批量在MongoDB裡面作也是可以用aggregate處理的,只是複雜一些~

    會用到$dateToString來調整格式,並用$add來加上8小時

    語句寫法為

    db.collectionName.aggregate([ {$project: {time: {$dateToString: {format: "%H:%M", date: {$add: ["$timestamp", 8 * 3600000]}}}}} ])

登录后回复
 

与 萌阔论坛 的连接断开,我们正在尝试重连,请耐心等待