--还是sql语句没写好吧, --c++里的sql查询字符串 "SELECT to_char(updatetime,'yyyy-mm-dd') as updatetime, sum(test_date) as test_date FROM test where to_char(updatetime,'yyyy-mm-dd')='"+daystamp+"' group by to_char(updatetime,'yyyy-mm-dd')" --oracle里的sql ,动态sql execute immediate 'SELECT to_char(updatetime,''yyyy-mm-dd'') as updatetime, sum(test_date) as test_date FROM test where to_char(updatetime,''yyyy-mm-dd'')='+daystamp+' group by to_char(updatetime,''yyyy-mm-dd'')'
''yyyy-mm-dd''这种写法会报错,还是没实现我要的功能。谢谢~~~
我提楼主鄙视我下 execute immediate 'SELECT to_char(updatetime,''yyyy-mm-dd'') as updatetime, sum(test_date) as test_date FROM test where to_char(updatetime,''yyyy-mm-dd'')='||daystamp||' group by to_char(updatetime,''yyyy-mm-dd'')' oracle中字符串连接是||不是+
在Oracle数据库中拼接字符串是用||而不是+SELECT to_char(updatetime,'yyyy-mm-dd') as updatetime, sum(test_date) as test_date FROM test where to_date(to_char(updatetime,'yyyy-mm-dd'),'yyyy-mm-dd')=to_date('"||daystamp||"','yyyy-mm-dd') group by to_char(updatetime,'yyyy-mm-dd')
这句把你的daystamp转换成后面类似的格式再传入就可以了
-----这两个加号问题大了---去掉---
--看这个例子你可能就明白了
SQL> set serveroutput on;
SQL> declare
2 v_time1 varchar2(20) :='2012-03-04 12:03:04';
3 v_time2 varchar2(20) :='2012.03.05';
4 begin
5 dbms_output.put_line('v_time1:'||to_date(v_time1,'yyyy-mm-dd'));
6 exception
7 when others then
8 dbms_output.put_line('v_time1:日期格式轉換出錯');
9 dbms_output.put_line('v_time2:'||to_date(v_time2,'yyyy-mm-dd'));
10 end;
11 /
v_time1:日期格式轉換出錯
v_time2:05-3月 -12 已順利完成 PL/SQL 程序.
-----这两个加号问题大了---去掉---
error C2146: syntax error : missing ';' before identifier 'daystamp'
你好,非常感谢您的回复,按照我对这段代码的理解是将daystamp转换为05-3月 -12 这种格式吗?我尝试了一下,将04-8月-12和04-08-2012,还是没能取得数据,可能是我没准确理解这段代码的含义,麻烦你再详细说一下。
declare
v_time1 varchar2(20) :='2012-03-04 12:03:04';
v_time2 varchar2(20) :='2012.03.05';--你的字符串應像這種或'2012-03-05'或'2012/03/05'都可以的
begin
dbms_output.put_line('v_time1:'||to_date(v_time1,'yyyy-mm-dd'));
exception
when others then
dbms_output.put_line('v_time1:日期格式轉換出錯');
dbms_output.put_line('v_time2:'||to_date(v_time2,'yyyy-mm-dd'));
end;
/
现在情况是这样的,我直接写具体的日期,没问题可以查询,但是加上CString 的daystamp后就是不行,我感觉也是应该转换一下格式或者进行一下处理,就是现在还没想出来,也是从没遇到过这样的问题。还是非常感谢...
--c++里的sql查询字符串
"SELECT to_char(updatetime,'yyyy-mm-dd') as updatetime,
sum(test_date) as test_date
FROM test
where to_char(updatetime,'yyyy-mm-dd')='"+daystamp+"'
group by to_char(updatetime,'yyyy-mm-dd')"
--oracle里的sql ,动态sql
execute immediate 'SELECT to_char(updatetime,''yyyy-mm-dd'') as updatetime,
sum(test_date) as test_date
FROM test
where to_char(updatetime,''yyyy-mm-dd'')='+daystamp+'
group by to_char(updatetime,''yyyy-mm-dd'')'
execute immediate 'SELECT to_char(updatetime,''yyyy-mm-dd'') as updatetime,
sum(test_date) as test_date
FROM test
where to_char(updatetime,''yyyy-mm-dd'')='||daystamp||'
group by to_char(updatetime,''yyyy-mm-dd'')'
oracle中字符串连接是||不是+
where to_date(to_char(updatetime,'yyyy-mm-dd'),'yyyy-mm-dd')=to_date('"||daystamp||"','yyyy-mm-dd') group by to_char(updatetime,'yyyy-mm-dd')