代码之家  ›  专栏  ›  技术社区  ›  feiiiiii

为什么在HH/MM/SS之间的不同日期之间的后遗症返回空

  •  1
  • feiiiiii  · 技术社区  · 7 年前

    当我用日期格式运行下面的后缀查询时 YYYY-MM-DD HH:MM:SS

    var query = "select * from alert_detail_full as a\
        where a.client_id = '" + clientId + "'\
        AND a.timestamp between '" + startDate + "' AND '" + endDate + "';";
        db.sequelize.query(query).spread(function (sresult, met) {
            console.log(sresult)
            var alerts = [];
            if (sresult != false) {
                sresult.forEach(function (e) {
                    alerts.push(e);
                });
            }
            response = {
                alerts: alerts
            };
            next(response);
        });
    

    我的后遗症运行这个查询:

    SELECT * FROM alert_detail_full as a    
    WHERE a.client_id = 'CL001' 
    AND a.timestamp BETWEEN '2018-06-08 00:02:00' AND '2018-06-08 00:06:00';
    

    如果我把这个查询直接放在mysql中,它会给我一个结果列表。 但在后继 sresult 收益率 [] ,但是,如果我在天而不是分钟内创建差异,它将返回如下结果列表。

    {
                "client_id": "CL001",
                "collector_id": "C01",
                "sensor_id": "S001",
                "value": "4341435.452947",
                "timestamp": "2018-06-08T08:01:00.000Z",
                "alert_yellow": "60230000.000000",
                "alert_red": "456000.000000",
                "alert_flag": "low"
            },
    

    更新

    如果我在两个小时之间 T00:02:00 - T20:02;00 它也会产生后遗症的结果,但是如果分钟间隔很小,我只能在MySQL中得到结果,然后总是返回。 []

    1 回复  |  直到 7 年前
        1
  •  1
  •   AbhinavD    7 年前

    将日期转换成 UTC 默认情况下插入和读取时。你可以告诉后继者不要这样做

    const sequelize = new Sequelize('db_name', 'postgres', 'postgres', {
      host: '127.0.0.1',
      dialectOptions: {
        useUTC: false //for reading from database
      },
      dialect: 'postgres',
      timezone: '+05:30', // for writng
    });
    

    再看看类似的问题 here