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

Posted

技术标签:

【中文标题】如何使用 sequelize 基于 sqlite3 中的“日期”列进行查询?【英文标题】:How to do query based on "date" column in sqlite3 using sequelize? 【发布时间】:2014-06-17 16:27:06 【问题描述】:

我正在使用带有 sqlite3 的 Sequelize,但在查询基于“日期”类型列的数据时遇到问题。

这是我的模型定义:

var sensorData = sequelize.define('Data', 

    time: Sequelize.DATE,
    value: Sequelize.FLOAT,
    type: Sequelize.STRING,
    source: Sequelize.STRING
,

    timestamps : false
);

现在我想在这个函数中获取所有“时间”晚于给定时间的记录:

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 的网站上找不到任何关于基于“日期”类型的查询语句的信息。

有什么想法吗?

【问题讨论】:

你试过where: time: gt: new Date(...)吗? 【参考方案1】:

你可以像这样使用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')

【讨论】:

【参考方案2】:

就像 Soumya 说的那样,您可以使用 $gt$lt$gte$lte 与日期:

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

【讨论】:

以上是关于如何使用 sequelize 基于 sqlite3 中的“日期”列进行查询?的主要内容,如果未能解决你的问题,请参考以下文章

错误:当我执行“sequelize db:migrate”时,“请手动安装 sqlite3 包”

使用 sequelize 通过相同两个表之间的单独联结表进行查询

Sequelize 基于关联的查找

同步 sequelize 模型:sequelize.import() 不是函数(并且已弃用)

在Windows上指定Sequelize sqlite路径

在 Windows 上指定 Sequelize sqlite 路径