orace 异常 ORA-01830: 日期格式图片在转换整个输入字符串之前结束

本文详细解析了在Oracle数据库中进行字符串到日期格式转换时常见的错误及解决方法,特别是针对带有时分秒的字符串格式。介绍了to_date函数的正确使用方式,并通过实例展示了如何避免ORA-01830和ORA-01861等异常,同时介绍了TRUNC函数的多种用途。

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

错误原因: 字符串转时间格式不对报错的(字符串格式 是否带有时分秒)

比如to_date(‘2019-02-27 16:36:00’,’yyyy-mm-dd’)这个就无法转换,就会抛异常:ORA-01830: 日期格式图片在转换整个输入字符串之前结束

to_date函数

to_date函数用于字符串转日期:

--oracle 为了区分分钟和月份,月份以mi表示

to_date('2019-02-27 16:36:00','yyyy-mm-dd hh24:mi:ss')

to_date('2019-02-27','yyyy-mm-dd') 

 

 

当前数据库的数据格式 2019-02-27 16:36:00

直接转化时 用substr() 作截取时还是报错 。。。。。ORA-01861:文字鱼格式字符串不匹配

select * from(select * from H22222222222222_201901 t where 
to_date(substr(t.datatime,1,10),'yyyy-mm-dd')=TO_CHAR(SYSDATE,'yyyy-mm-dd') order by t.datatime desc) 

在添加一层函数 

TRUNC():类似截取函数,按指定的格式截取输入的数据。

trunc(sysdate) //返回系统当前时间
trunc(sysdate,'yyyy');//返回当前年的第一天
trunc(sysdate, 'mm');//返回当前月的第一天
trunc(sysdate, 'dd');//返回当前时间的年月日
trunc(sysdate, 'd');//返回当前星期的第一天
trunc(sysdate, 'hh');//返回当前小时

select * from(select * from H22222222222222_201902 t where 
trunc(to_date(substr(t.datatime,1,10),'yyyy-MM-dd ')) = trunc(sysdate) order by t.datatime desc)

  

 

转载于:https://www.cnblogs.com/xkoko/p/10444779.html

### Oracle 中使用 `TO_DATE` 函数将字符串转换为日期 在 Oracle 数据库中,`TO_DATE()` 函数用于将字符串按照指定的格式转换成日期类型。此函数接收两个主要参数:待转换字符串以及定义字符串格式的模式[^1]。 对于具体的实现方式有如下展示: 当有一个代表日期的字符串 `'2023-05-16'` 需要被化为日期对象时,可以采用下面这条 SQL 查询语句来完成操作: ```sql SELECT TO_DATE('2023-05-16', 'YYYY-MM-DD') AS converted_date FROM dual; ``` 上述命令中的 `TO_DATE` 接收了两个参数——一个是目标字符串 `'2023-05-16'`;另一个则是指示该字符串结构的模板 `'YYYY-MM-DD'`。执行这段代码之后会得到一个新创建出来的列叫做 `converted_date` ,里面存储着已经成功变过的日期值[^2]。 值得注意的是,在构建第二个参数即格式模型的时候,应当确保它能够精确匹配输入字符串的实际布局,这样才能保证转换过程顺利完成并获得预期的结果。 #### 关于日期和时间组件的支持 除了基本的日、月、年之外,如果涉及到更复杂的时间表达形式(比如小时、分钟),也可以通过调整格式掩码来进行处理。例如,假设存在这样一个包含具体时刻信息的字符串 `'2023-05-16 14:30:00'` 并希望将其变为带有时间部分的 DATE 类型,则可利用类似的语法: ```sql SELECT TO_DATE('2023-05-16 14:30:00', 'YYYY-MM-DD HH24:MI:SS') AS datetime_value FROM dual; ``` 这里增加了对小时 (`HH24`)、分钟(`MI`) 和秒 (`SS`) 的支持,从而使得最终产出的数据不仅限于单纯的日期而是完整的日期加时间记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值