如何使用sequelize基于sqlite3中的“date”列进行查询?

时间:2014-05-01 07:07:45

标签: node.js sqlite sequelize.js

我正在使用Sequelize和sqlite3,但无法根据“日期”类型列查询数据。

这是我的模型定义:

var sensorData = sequelize.define('Data', 
{
    time: Sequelize.DATE,
    value: Sequelize.FLOAT,
    type: Sequelize.STRING,
    source: Sequelize.STRING
},
{
    timestamps : false
});

现在我希望在此函数中以比给定时间晚的'time'获取所有记录:

function selectData(start_date, num_of_records, callback)
{
    sensorData.findAll({
        limit: num_of_records, 
        where: [time, '???'], <====== How to specify the condition here?
        order: 'time'}).success(callback);
}

我在Sequelize的网站上找不到任何关于基于'日期'类型的查询语句的内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

就像Soumya所说,您可以使用$gt$lt$gte$lte并注明日期:

model.findAll({
  where: {
    start_datetime: {
      $gte: new Date()
    }
  }
})

答案 1 :(得分:0)

您可以像这样使用sequelize.fn

where:{timestamp:    gte:sequelize.fn('date_format', fromDate, '%Y-%m-%dT%H:%i:%s')
            ,lte:sequelize.fn('date_format', toDate, '%Y-%m-%dT%H:%i:%s')
}