笔者需求:根据日期201910获取半年前的日期201904。读者需求:根据自身需求自行微调。
1,如果拿到的日期格式不是标准格式(yyyy-MM-dd HH:mm:ss),先转成时间戳。
select unix_timestamp('201910', 'yyyyMM') from dual;
--返回结果:15698592002,再将时间戳转成标准时间格式。
select from_unixtime(unix_timestamp('201910', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss') from dual;
--返回结果:2019-10-01 00:00:003,调用add_months函数,负数代表往历史方向减月份, 正数代表往未来方向加月份。
(注:笔者往历史方向减半年6个月时间)
select add_months(from_unixtime(unix_timestamp('201910', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss'), -6) from dual;
--返回结果:2019-04-014,再将日期转成时间戳格式
select unix_timestamp(add_months(from_unixtime(unix_timestamp('201910', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss'), -6), 'yyyy-MM-dd') from dual;
--返回结果:15540480005,设置日期模板,转换成最终想要的日期格式
select from_unixtime(unix_timestamp(add_months(from_unixtime(unix_timestamp('201910', 'yyyyMM'), 'yyyy-MM-dd HH:mm:ss'), -6), 'yyyy-MM-dd'), 'yyyyMM') from dual;
--返回结果:201904
版权声明:本文为u010916338原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。