【问题标题】:How to save date type dd/mm/yyyy format in mongodb如何在mongodb中保存日期类型dd/mm/yyyy格式
【发布时间】:2023-03-10 09:43:01
【问题描述】:

尝试在 mongodb 中保存日期格式,如 dd/mm/yyyy,但保存为 2020-06-01T18:30:00.000Z。我想在 mongodb 中保存为 2020-06-01。怎么做? 这是我的代码:

data.model.js:

const mongoose = require('mongoose');

var userSchemaData = new mongoose.Schema({
    p_id: {
        type: String
    },
    product_today: {
        type: Date
    },
    product_afterfive: {
        type: Date
    } 
}, {
    versionKey: false,
    collection: 'data'
});

module.exports = mongoose.model('Data', userSchemaData);

data.controller.js:

var moment = require('moment');
var todayDate = new Date(); 
var afterfiveDays = new Date(new Date().getTime() + (5 * 24 * 60 * 60 * 1000));

module.exports.insertData = (req, res, next) => {
    let collectionName = req.query.collection;
    var Product= mongoose.model(collectionName); 
    var todayDateFormat = moment(todayDate, 'DD-MM-YYYY').format('MM-DD-YYYY');
    var afterfiveDaysFormat = moment(afterfiveDays, 'DD-MM-YYYY').format('MM-DD-YYYY');

    var product = new Product({
            p_id: "CS1",
            product_today:todayDateFormat,
            product_afterfive: afterfiveDaysFormat 
    });

        product.save(function(error, document) { 
            if (error) { console.log(error); } else {
                console.log("Successful inserted");

                res.json({ success: true, msg: 'User inserted.', cname: collectionName });
            }
});

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    如文档中所述,mongoose 将根据提供的日期值创建本机 Date 对象(请参阅 https://mongoosejs.com/docs/tutorials/dates.html

    造成这种情况的原因可能是 MongoDB 的“日期”underlying type

    BSON 日期是一个 64 位整数,表示 自 Unix 纪元(1970 年 1 月 1 日)以来的毫秒数。这导致一个 可表示的日期范围为过去约 2.9 亿年 未来。

    所以没有时间就没有日期类型。您可以确保在应用程序代码中插入时间设置为 00:00:00 的日期,或者将“YYYY-MM-DD”值存储为 String 而不是 Date

    【讨论】:

    • 嗨..我有一个问题..我花了很多时间寻找解决方案,但我找不到..所以请回答我。
    • 我只需将 product_todayproduct_afterfive 的数据类型更改为 String - 您当前用于插入的代码可以保持不变。只有当您在应用程序中对这些日期值有一些逻辑时,您现在当然需要将这些值转换回日期。
    • 我说的是我的新Q
    • 哦,好的,我会调查的。
    • 你有什么想法吗?
    猜你喜欢
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多