oracle-jdbc执行sql中日期参数问题

问题描述

jdbc执行sql中日期参数问题

select 1 from dual where sysdate='2013-01-01';这样一个sql语句,在jdbc中可以正确执行,在pl/sql中确报错:“ORA-01861: literal does not match format string”,select 1 from dual where sysdate='01-1月-2013'在pl/sql中可以正常执行,求教大神,jdbc会改变我的sql语句吗?jdbc是怎么执行sql语句的?

解决方案

sysdate 是date类型的,‘2013-01-01’是字符类型,两个不同类型的对象肯定是不能比较的
你可以试着把sysdate给它tochar一下,或者把“=”改成like

解决方案二:

jdbc不会改变的你sql语句,是oracle在执行时会时间进行字符格式化,你可以在oracle端设置日期格式,不过最好的方法是做转换就像1楼说的那样的

解决方案三:

select 1 from dual where sysdate='2013-01-01';

应该用到 to_date('2013-01-01','yyyy-mm-dd')
不然在pl/sql会报错!两个之间类型不对,

时间: 2024-09-19 23:42:42

oracle-jdbc执行sql中日期参数问题的相关文章

Oracle批量执行sql语句之禁用所有表的外键_oracle

在转移数据库,进行数据导入的时候,遇到一件麻烦事,就是表间外键约束的存在,导致insert频频报错,批量执行sql语句又是顺序执行,没办法我只好手动输入. 然后输入到一半灵光一闪,为什么不先把外键约束全部禁用先呢? 于是我百度到以下资料: oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束 执行以下sql生成的语句即可 1删除所有外键约束 select 'alter table '||table_name||' drop constraint '||constraint_name

Oracle或者Pl/Sql中001与1一样吗?

今天写了一个插入语句,往表C中插入数据.insert into 表名(列名) values () where A.列aa=B.列bb;      但半天没反应,select aa from A;select bb from B,发现存在相等的值      A中的aa是1,2,3:B中是001,002,003 解决:把1改为001,2改为002,3改为003后问题解决,从此可以看出001与1在Oracle或者Pl/Sql中是不一样的!     这个问题很可能是由于在数据库中这个字段是字符型的,导致

如何对oracle jdbc执行的每条sql语句进行检测?

问题描述 请问大家如何对jdbc执行的每条sql语句进行检测?例如:PrepareStatementpstmt=conn.prepareStatement(LOAD_ALLSURVEY);rs=pstmt.executeQuery();如何在执行rs=pstmt.executeQuery();时将执行的sql语句和参数打印出来?我试过的方法有:1.找到classes12.jar的源代码,并对其进行修改,然后再打包,但是没有找到对应的源代码?2.对其进行反编译,但是效果不怎么理想.请问大家有什么好

pl/sql中的参数模式

在平时的工作中,可能通过pl/sql传入参数来做一些特定的操作,参数模式一般有In,out.in out这几种 比如dbms_sqltune下的PREPARE_SQLSET_STATEMENT就包含了三种类型的参数 FUNCTION PREPARE_SQLSET_STATEMENT RETURNS VARCHAR2  Argument Name                  Type                    In/Out Default?  ------------------

关于sql中日期相关跨年处理

  关于sql数据库里日期的跨年处理: 读取本周和上周纪录时,涉及跨年数据要特殊处理: 数据库里周数保存 1-52周. 按照sql函数取得周数时会出现53的问题. 写入数据库时要处理州周为53的情况, week=53   则当作下1年处理 nian=nian+1 week=1   本周:  SET DATEFIRST 1 -- 设置周一为一周的第一天  declare @week_year int  set @week_year = year(getdate())  declare @week

sql中日期日期周末月末函数

 代码如下 复制代码 select Dateadd(wk,datediff(wk,0,getdate()),0) --周一                             select Dateadd(wk,datediff(wk,0,getdate()),6) --周日 select Dateadd(mm,datediff(mm,0,getdate()),0) --月初 select Dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,

Oracle动态执行SQL四种方式的例子

方式1 CREATE OR REPLACE PROCEDURE demo(salary IN NUMBER) AS     cursor_name INTEGER;     rows_processed INTEGER; BEGIN     cursor_name := dbms_sql.open_cursor;     dbms_sql.parse(cursor_name, 'DELETE FROM emp WHERE sal > :x',                    dbms_sq

sql中返回参数的值_MsSql

declare @name varchar(50) exec sp_executesql N'select @value=姓名 from people where 人员编号=''0001''',N'@value varchar(50) output',@name output select @name

sql中返回参数的值

declare @name varchar(50) exec sp_executesql N'select @value=姓名 from people where 人员编号=''0001''',N'@value varchar(50) output',@name output select @name