You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:SQLite查询30天前数据筛选未缴费会员未获预期结果

解决SQLite查询30天前/上月未缴费会员的问题

嘿,我一眼就看出问题所在啦——你用的DATEADD()和getdate()是SQL Server的专属函数,但SQLite有自己的日期处理规则,而且你把函数包在单引号里,导致SQL把它当成了普通字符串,根本没执行计算!

核心问题拆解

  • SQLite不支持DATEADD()和getdate(),替代的是用DATE('now', 偏移量)来计算日期,CURRENT_DATE或DATE('now')可以获取当前日期。
  • 你把DATEADD(Day,-30,getdate())放在单引号里,这会让SQLite把它当作一个字符串值去匹配DateOfAd字段,自然找不到对应数据。

正确的查询语句

场景1:查询30天前及更早的会员数据

如果你的DateOfAd字段是DATE类型或者存储为YYYY-MM-DD格式的文本,用这个语句:

SELECT * FROM MemberInformation WHERE DateOfAd <= DATE('now', '-30 days');

DATE('now', '-30 days')会自动计算当前日期往前推30天的日期,<=确保你能拿到所有30天前(含当天)的记录。

场景2:更精准的“上月”数据查询

如果你的需求是严格找上个月的未缴费会员(比固定30天更准确,因为不同月份天数不同),可以用这个语句:

SELECT * FROM MemberInformation 
WHERE DateOfAd BETWEEN DATE('now', 'start of month', '-1 month') 
                  AND DATE('now', 'start of month', '-1 day');
  • DATE('now', 'start of month', '-1 month'):获取上个月的第一天
  • DATE('now', 'start of month', '-1 day'):获取上个月的最后一天

额外提醒

确保你的DateOfAd字段存储的是标准日期格式(比如YYYY-MM-DD),SQLite的日期函数对这种格式支持最好。如果字段是时间戳(整数类型),可以用strftime('%s', DATE('now', '-30 days'))把日期转换成时间戳再对比。

内容的提问来源于stack exchange,提问作者yns Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:35:03