Oracle中获取时间的年和月并比较大小

(作者:陈玓玏)

在Oracle中,我觉得最让人头疼的就是操作Date型的数据了,比如取年月日、计算几天前、几年前、几个月前什么的。但是这个又用得很多,因为不管你做什么内容的挖掘,总是离不开时间窗口的,因为数据大多是以人为本的,而人又是善变的,所以时间是你必须非常看重的。

1、Oracle中分别取年、月、日的方法

--取年份
Select to_number(to_char(sysdate,'yyyy')) from dual
select extract (year from sysdate) from dual

--取月份
Select to_number(to_char(sysdate,'mm')) from dual
select extract (month from sysdate) from dual

--取日期
Select to_number(to_char(sysdate,'dd')) from dual
select extract (day from sysdate) from dual

2、Oracle中取日、月的方法

--如果字段本身就是date型
Select to_char(sysdate,'yyyy-mm') from dual
--如果字段本身不是dateSelect to_char(to_date(datechar,'yyyy-mm'),'yyyy-mm') from dual
--也可以用substr方法了,参数4表示从哪个字符开始截取,10表示截取多少个字符
select substr(to_char(sysdate,'yyyy-mm-dd'),4,6) from dual

以上这种方法虽然很简单粗暴,但亲测有效,而且可以比较大小,请看下方代码

3、Oracle中日、月比较大小

--如果字段本身就是date型
to_char(date,'yyyy-mm')<=to_char(sysdate,'yyyy-mm')
--如果字段本身不是date型
to_char(to_date(date,’yyyy-mm’),'yyyy-mm')<=to_char(to_date(datechar),'yyyy-mm')

可以这样做的原因是:Oracle能够在同类型间默认转换为数字,并进行大小的比较,你要是不放心,也可以换成数字或者时间戳试试。

猜你喜欢

转载自blog.csdn.net/weixin_39750084/article/details/81293262
今日推荐