Oracle日期转换:日期运算后转回YYYYMMDD格式的实现方法
解决Oracle日期计算后转回YYYYMMDD格式的问题
嘿,刚接触Oracle遇到这种日期格式的坑太正常啦!你已经找对了关键第一步——用TO_DATE把字符串转成真正的日期类型来计算,这样就不会出现直接加数字导致的“20180953”这种错误日期了。接下来要转回YYYYMMDD格式,只需要在这个基础上套一层TO_CHAR函数就行。
具体实现方法
直接用函数嵌套就能搞定:
TO_CHAR(TO_DATE('20180924', 'YYYYMMDD') + 29, 'YYYYMMDD')
- 第一步:
TO_DATE('20180924', 'YYYYMMDD')把字符串转成Oracle能识别的日期类型,这时候加29天就会自动处理月份进位(9月只有30天,24+29=53天,减去30天就进到10月的23号) - 第二步:用
TO_CHAR(..., 'YYYYMMDD')把计算后的日期再转成你需要的字符串格式,结果就是20181023
针对变量的写法(Pro*C中常用)
如果你的日期字符串是来自Pro*C的绑定变量,写法也类似:
TO_CHAR(TO_DATE(:your_input_str, 'YYYYMMDD') + 29, 'YYYYMMDD')
验证例子
- 输入
'20180923'时,执行后会得到20181022,完全符合日期计算逻辑 - 输入
'20181225'(圣诞节)加29天,会得到20190123,自动跨年也没问题
小提醒:如果你的输入字符串可能存在不合法的日期格式(比如'20180230'),可以搭配VALIDATE_CONVERSION函数先做校验,避免报错哦~
内容的提问来源于stack exchange,提问作者Vimal Bhaskar
相关产品推荐
相关产品推荐

