oracle如何获取当前月份,去掉前面的0

oracle如何获取当前月份,去掉前面的0,第1张

如果字符串只有开头有零,而字符串中间没有0,那么可以使用replace(字符串,'0','')

如果0开头最长的位数不长,那么可以逐个判断。

比如我可能知道这里面最长的就是连续5个0开头的,这样我就判断如果遇到5个0开头的就截掉前五位,4个0开头截掉前四位,3个0开头截掉前三位,一直到1,逐个判断使用case when可以完成但是如果最长的0开头个数不确定,就比较麻烦了。

sqlserver:

select convert(varchar(7),dateadd(mm,-tnumber,getdate()),120)

from

(select number from masterspt_values where type='P') t

where year(dateadd(mm,-tnumber,getdate()))=year(getdate())

order by convert(varchar(7),dateadd(mm,-tnumber,getdate()),120)

oracle:

select to_char(add_months(sysdate, -trn), 'yyyy-mm')

  from dual a, (select rownum - 1 rn from dual connect by rownum <= 12) t

 where to_char(add_months(sysdate, -trn), 'yyyy') =

       to_char(sysdate, 'yyyy')

 order by to_char(add_months(sysdate, -trn), 'yyyy-mm')

1、查询确定年月的数据,使用to_date或to_char都可以实现

SELECT  FROM 表名

WHERE TO_CHAR(日期列,'YYYY-MM') = TO_CHAR('2013-06','YYYY-MM')   或者

SELECT  FROM 表名

WHERE 日期列 = TO_Date('2013-06','YYYY-MM')

2、查询前一个月

select concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-'),'01 00:00:00')start_time,   

   concat(to_char(sysdate,'yyyy')||to_char(add_months(sysdate,-1), '-MM-')||to_char(LAST_DAY(sysdate),'dd '),'23:59:59') end_time     from dual

3、查询前一天

  select to_char(sysdate-1,'yyyy-mm-dd ')||'00:00:00' start_time,to_char(sysdate-1,'yyyy-mm-dd ')||'23:59:59' end_time  from dual

参考楼主的改的,献丑了。

select to_char(add_months(to_date('2001-12', 'yyyy-mm'), rownum), 'yyyy-mm') as month

from dual

connect by rownum <= months_between(to_date('2010', 'yyyy'), to_date('2002', 'yyyy'))

以上就是关于oracle如何获取当前月份,去掉前面的0全部的内容,包括:oracle如何获取当前月份,去掉前面的0、SQLServer、Oracle获取当前年份的1月到当前月之间的所有月份、oracle取出某个月的所有数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9879511.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存