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

求助:MySQL查询距今16年以上发票的通用SQL语句

查询超过16年的发票SQL语句

最终推荐SQL语句

SELECT *
FROM invoices
WHERE invoice_date < DATE_SUB(NOW(), INTERVAL 16 YEAR);

语句说明

  • DATE_SUB(NOW(), INTERVAL 16 YEAR)会自动计算当前日期往前推16年的日期,无需手动指定固定日期,每次执行都会基于当前时间动态计算,完全满足你“随时生效”的需求。
  • 如果一定要用你提到的EXTRACT(YEAR FROM NOW())写法,也可以这样写,但准确性稍差:
SELECT *
FROM invoices
WHERE EXTRACT(YEAR FROM NOW()) - EXTRACT(YEAR FROM invoice_date) > 16;

注:第二种写法只对比年份差,会把16年前全年的发票都筛选出来(比如当前是2024年5月,2008年12月的发票也会被选中);而第一种写法会精确到日,只筛选出16年前当天之前的发票,业务场景中通常更符合需求。

额外注意

如果你的发票日期字段是字符串类型,需要先转换成日期格式再比较,比如字段存储格式是YYYY-MM-DD,语句要调整为:

SELECT *
FROM invoices
WHERE STR_TO_DATE(invoice_date, '%Y-%m-%d') < DATE_SUB(NOW(), INTERVAL 16 YEAR);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:35:39