如何使用 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 通过相同两个表之间的单独联结表进行查询