oracle字符串类型转日期统计

Oracle数据库中的表用varchar字段存取年月,前端传来String类型字段来查与之匹配的前一年数据。
因为是需要前一年(12个月的数据)所有需要把String转为Date

select t.* from tableName t where t.username= #{xxxx} and (to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -1)
        or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -2) or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -3)
        or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -4) or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -5)
        or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -6) or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -7)
        or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -8) or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -9)
        or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -10) or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -11)
        or to_date(t.xxxx, 'yyyyMM') = add_months(trunc(to_date(#{xxxx}, 'yyyyMM'), 'MM'), -12))
  • to_date(#{xxxx},‘yyyyMM’),这个yyyyMM(不区分大小写)代表你xxxx的长度,如你的xxxx是202106它将帮你转换为2021/6/1
  • trunc(to_date(xxxx,‘yyyymm’),‘mm’),trunc(日期)函数时按月精确,返回当月的第一天
  • add_months(trunc(to_date(xxxx,‘yyyymm’),‘mm’),2)对月份加2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值