oracle 日历每个月的第一天显示为中文的月份

需求如下:
有一个教学周历,每个月的第一天显示月份,比如九月、十月、十一月。该月其余的日期直接显示“日”即可。

举例:

原数据显示值
2022-07-1212
2022-08-01八月
2022-09-0202
2022-10-1111
2022-11-01十一月

方法一:
以字符串的方式来进行处理(不推荐)。

  1. 通过函数 substr() 获取到最后 2 位,即“日”。
  2. 通过函数 instr()substr() 获取到 2 个- 分隔符中间的月份。
  3. 判断“日”是否为01,若是则把对应的月份显示为中文,否则直接显示“日”。

踩过的坑:

  1. 代码量大。
  2. 月份转为中文的逻辑,单独用一个函数处理会更清晰。

方法二:
转化为 date 类型再处理(推荐,代码简洁明了)。

  1. 转化为 date 类型。
  2. 通过 to_char(date, 'mm') 或者 extract(month from date) 直接获取月份。
  3. 同理可以直接获取“日”的值。
  4. 最后,判断“日”的值,分别进行显示。

小细节:

  1. to_char(date, mm) 获取的月和日,都有前置0;而extract() 函数直接获取的没有前置的 0
  2. 1~12 月转中文的逻辑,并不能直接使用阿拉伯数字 0~9 转中文的做法,不能正常处理十月、十一月和十二月(直接用 if-else 嘿嘿)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值