oracle 日期比较问题

本文详细介绍了Oracle数据库中处理日期的常见问题与解决方案,包括使用to_date函数进行字符串到日期的转换,解决ORA-01830错误,以及如何获取和比较年月数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写sql时,想取出数据库中和当前系统时间当月的数据,在执行sql语句时,报错ORA-01830: 日期格式图片在转换整个输入字符串之前结束.

to_date函数

to_date函数用于字符串转日期,与to_char函数刚好相反。to_date形如

--oracle 为了区分分钟和月份,月份以mi表示
to_date('2018-11-22 09:11:22','yyyy-mm-dd hh24:mi:ss') 
to_date('2018-11-22','yyyy-mm-dd')

第一个参数参数是源字符串,第二个参数是要转换成的日期形式。但是to_date限制两者精确度须一致,比如to_date(‘2018-11-22 09:11:22’,’yyyy-mm-dd’)这个就无法转换。

我传入的第一个参数是2018-11-22 ,而第二个参数的形式是yyyy-mm  所以就报错了.

 

oracle获取时间的年月

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

Oracle中取日、月的方法

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

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')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值