格式-关于oracle中日期比较出现问题

问题描述

关于oracle中日期比较出现问题
select a.* 2 if_dj_check
from v_sj_corp a
where exists
(select 1
from t_m_corp_corp_stock m t_corp_stock s1
where a.id = m.id
and a.org = m.org
and a.seq_id = m.seq_id
and s1.id = m.sub_id
and s1.org = m.sub_org
and s1.seq_id = m.sub_seq_id
and (
add_months(sysdate(-12*16))<to_date(FUN_GET_BORN_YEAR(s1.certificate_no)'YYYY-MM-DD')
)
)
如上sql中关联,执行就会报ORA-06861 文字与字符串格式不匹配,但是单独将s1.certificate_no修改为某一个固定的字符串就能执行,问题出在哪

解决方案

要么 FUN_GET_BORN_YEAR 有错,要么certificate_no中有错误的日期(比如 YYYY-02-31)。
其实应该在FUN_GET_BORN_YEAR中调用 TO_DATE(),这样可以在 EXCEPTION 中输出出错的 certificate_no。

解决方案二:
先用 select FUN_GET_BORN_YEAR(s1.certificate_no) t_corp_stock s1 看看出来的结果是不是都是yyyy-mm-dd的格式

时间: 2024-12-03 11:52:38

格式-关于oracle中日期比较出现问题的相关文章

如何取得oracle中日期的时分秒啊?

问题描述 如何取得oracle中日期的时分秒啊?SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");System.out.println(f.format(obj[3]));进行了日期格式转换,打印出来的是 2012-03-19 00:00:00 但是数据库里面有正常的时分秒,怎么处理啊? 问题补充:yeqing4562011 写道 解决方案 LZ可测试下以下代码public static void main

格式-请问oracle中如何得到一个日期是周几

问题描述 请问oracle中如何得到一个日期是周几 select to_number(sysdate,'day') from dual; 是会报错的 不要to_char的 解决方案 select to_number(to_char(sysdate - 1,'d')) from dual; 解决方案二: select trunc(sysdate) - trunc(sysdate,'day') from dual

oracle中日期格式问题

问题描述 比如我从表中拿到A列为生日,其格式为varchar2类型,我想只要它的年,该如何操作?如:select A from table; A列输出结果为2010-10-26 为varchar2类型的,我只想要年,因为我要计算他的年龄! 问题补充:lerous 写道 解决方案 select to_number(to_char(sysdate,'YYYY')-substr(t.A,1,4)) "年龄" from table t;直接帮你查出年龄算了解决方案二:其实这样是挺好的,没有日和

Oracle中日期方面的SQL实例

№1:取得当前日期是本月的第几周 SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YY ------------------- 20030327 4 18:16:09 SQL> select to_char(sysdate,'W') from dual; T - 4 №2:取得当前日期是一个星期中的第几天,注意星期日是第一天 SQL> select sysdate,to_ch

oracle-Oracle数据库中日期格式(样式)的转换

问题描述 Oracle数据库中日期格式(样式)的转换 Oracle中现有一字段为文本型,其值类似于"29-6月 -14 11.12.24.453000 上午"的样式,现想将其统一转换为类似"2014/6/29 11:12:24"的格式,请问该怎么办? 本人初学Oracle,请尽可能讲解得详细些,先谢谢了. 解决方案 oracle 正则 这个js 做的正则,本地没有oracle 环境. 解决方案二: to_char(xxx,'yyyy-mm-dd hh24:mi:ss

Oracle中如何生成指定范围内随机日期

/* * Oracle将日期作为过去某个关键日期(这个日期是公元前4712年1月1日)的整数偏移量来保存(即把日期保存为一个数字); * 因此可通过寻找'指定日期'与'关键日期'相对应的整数偏移量,再加一个指定范围内的随机整数来生成一个指定范围内的随机日期. */ 步骤: 1. 先找到'指定日期'与'关键日期'相对应的整数偏移量,格式为'J': SQL>select to_char(sysdate,'J') from dual; --系统给的结果是: 2456191 2. 生成指定范围[min_

Excel中日期格式快速转换为XX年XX月XX日的样式

  创建一个Excel表格,要求表格中有需要进行规范化显示的日期时间.将如图中日期格式"20141201"自动转换为"2014年12月01日" 选中需要做日期转换的"20141201",鼠标右键选择"设置单元格格式". 在跳出的"设置单元格格式"文本框中,选中"数字"选项卡下的"自定义"一项. 在"设置单元格格式"文本框,将类型填写为"#

急求:向oracle中的日期类型中插入空值

问题描述 急切请问:如何向oracle中的日期类型中插入空值?谢谢帮忙!!! 解决方案 解决方案二:允许NULL就可以null想插空格是不行的解决方案三:不填这个栏位不就得了

oracle中如何获取两个日期之间指定星期的日期是多少

问题描述 oracle中如何获取两个日期之间指定星期的日期是多少 如题,现在用户选择了一个起始日期和截止日期, 也选择了几个星期, 那么如何得到他选择的这几个星期的日期分别是多少? 解决方案 获取两个日期之间星期X的日期列表获取两个日期之间的日期间隔获取指定日期是星期几 解决方案二: 我的思路是这样的 1.写个方法,获取 起始,截止 日期之间 所有的日期 2.oracle提供了获取指定日期是星期几 的 函数 把选定的星期作为条件即可 解决方案三: DECLARE v_date date; v_n