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

SQL中如何将P20221025格式日期减10天并应用于WHERE子句

处理SQL中P前缀日期格式的减10天筛选需求

要实现date = P20221025 - 10天的筛选效果,核心是先把带P前缀的字符串转成标准日期类型,再执行日期减法操作,最后在WHERE子句中匹配目标字段。不同SQL方言的函数略有差异,以下是常见数据库的具体实现:

MySQL

先截取字符串去掉前缀P,转成日期后减去10天:

WHERE date_column = DATE_SUB(STR_TO_DATE(SUBSTRING('P20221025', 2), '%Y%m%d'), INTERVAL 10 DAY)
  • SUBSTRING('P20221025', 2):去掉开头的P,得到20221025
  • STR_TO_DATE(..., '%Y%m%d'):把字符串转成日期类型
  • DATE_SUB:用来实现日期减法

PostgreSQL

通过截取后转日期,再减去指定天数的间隔:

WHERE date_column = TO_DATE(RIGHT('P20221025', 8), 'YYYYMMDD') - INTERVAL '10 days'
  • RIGHT('P20221025', 8):取字符串最后8位,即20221025
  • TO_DATE(..., 'YYYYMMDD'):将字符串转换为日期类型
  • 直接用- INTERVAL '10 days'完成日期减法

SQL Server

先移除前缀P,转成日期后用DATEADD函数减10天:

WHERE date_column = DATEADD(DAY, -10, CONVERT(DATE, STUFF('P20221025', 1, 1, ''), 112))
  • STUFF('P20221025', 1, 1, ''):替换掉第一个字符(P),得到20221025
  • CONVERT(DATE, ..., 112):按YYYYMMDD格式将字符串转为日期类型
  • DATEADD(DAY, -10, ...):对目标日期执行减10天操作

如果你的P前缀日期是变量(比如存储在字段或参数中),直接把'P20221025'替换成对应的变量名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:40:31