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,得到20221025STR_TO_DATE(..., '%Y%m%d'):把字符串转成日期类型DATE_SUB:用来实现日期减法
PostgreSQL
通过截取后转日期,再减去指定天数的间隔:
WHERE date_column = TO_DATE(RIGHT('P20221025', 8), 'YYYYMMDD') - INTERVAL '10 days'
RIGHT('P20221025', 8):取字符串最后8位,即20221025TO_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),得到20221025CONVERT(DATE, ..., 112):按YYYYMMDD格式将字符串转为日期类型DATEADD(DAY, -10, ...):对目标日期执行减10天操作
如果你的P前缀日期是变量(比如存储在字段或参数中),直接把'P20221025'替换成对应的变量名即可。
内容的提问来源于stack exchange,提问作者system error
相关产品推荐
相关产品推荐

