在plsql里执行查询语句提示:数据类型不一致 应为date 却获得了number

在plsql里执行查询语句提示:数据类型不一致 应为date 却获得了number,第1张

从你的SQL中,猜想xxcsrq字段应该是Date型的,xxsfzh可能是存储了日期的字符字段,想从xxsfzh字段提取出日期再与xxcsrq做比较,如果是这样应该改为以下语句

select

from xx

where csrq <> to_date(substr(sfzh,7,4)||'-'||substr(sfzh,11,2)||'-'||substr(sfzh,13,2),'YYYY-MM-DD')

不知道你要什么,简要的说一下oracle日期直接量的写法希望对你有帮助:

日期: date '2010-07-07'

日期时间: timestamp '2010-07-07 13:38:00'

其他的字符串转换为日期的可以使用to_date函数,具体用法参考oracle的帮助或上网查一下

是否日期,用to_date处理,如果to_date报错就不是日期,当然也可以写个function

日否身份z号码,这个比较复杂,可以写个function实现,代码我就不放这里了

case when is_date(String) or is_idCard(String) then '1' else '2' end as bir

to_char函数可以将日期值格式化为字符串; to_date函数将字符串按指定格式转换成日期值。

在查询中, 将'2014/01/01'转换成日期值,然后再用作查询条件,这样会比较好。

select where enddate < to_date('2014/01/01', 'yyyy/mm/dd')

通过Oracle执行计划可以看到SQL的执行时间。

EXPLAIN PLAN FOR

SELECT FROM table;

SELECT FROM TABLE(DBMS_XPLANDISPLAY);

SQL>set timing on --显示执行时间

SQL>set autorace on C显示执行计划

SQL>set autorace on C显示执行计划

SQL>set autotrace traceonly C只显示执行计划即不显示查询出来的数据

设置完毕后执行SQL语句就会显示执行时间。

算是一个小知识,PLSQL中的日期格式,默认可能很难看,反正我不喜欢,我就把它改成了 yyyy-mm-dd 这种类型

这个需要修改系统的环境变量

在Windows中,增加环境变量

参数设置为你想要的格式:

然后,重启下PLSQL就行了

以上就是关于在plsql里执行查询语句提示:数据类型不一致 应为date 却获得了number全部的内容,包括:在plsql里执行查询语句提示:数据类型不一致 应为date 却获得了number、plsql 日期时间格式、如何在plsql中利用case when 判断一个字段是否符合日期,或者身份z号,仔细看题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9552944.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存