Cassandra如何编写CQL查询系统日期+1对应到期的用户账单数据
Cassandra 筛选明日账单到期记录的查询语句写法
前置说明
你提到的dd-MMM-yy是billing_due_date字段的字符串展示/插入格式,Cassandra原生date类型本身不存储格式,日期比较时会自动兼容支持的格式字符串,不需要额外做格式转换。
前置约束
Cassandra的过滤条件有严格的性能限制:
billing_due_date必须是表的分区键/聚类键,否则查询要么需要创建二级索引,要么需要加ALLOW FILTERING(仅测试环境可用,生产环境使用会有严重性能问题)
可用查询语句
Cassandra 3.10及以上版本支持内置日期函数,可以直接在CQL中计算次日日期:
-- 把字段1、字段2替换为你需要提取的实际字段名 SELECT 字段1, 字段2 FROM customer_info WHERE billing_due_date = dateAdd(day, 1, currentDate());
低版本兼容方案
如果你的Cassandra版本不支持dateAdd函数,需要在应用层先计算出次日的日期,格式化为dd-MMM-yy或者yyyy-MM-dd格式后作为常量传入查询即可:
SELECT 字段1, 字段2 FROM customer_info WHERE billing_due_date = '18-AUG-21';
内容的提问来源于stack exchange,提问作者user16697070
相关产品推荐
相关产品推荐

