这样的SQL语句对吗? ......where auto_no = 'autoNo' and wt_date <='comDate';看看你的数据类型是否一致,从面上看,你的wt_date该是时间Data类型,'comDate'这是一个字符串。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢,但是类型是没有错误的主要看sql语句格式对不对 不知道你是用什么语言在开发.Delphi里面是单引号.经过测试语法上没有问题. auto_no 也是字符型的??如果是,就没问题,如果是整型,那就需要把单引号去掉了 如果comDate是日期類型這樣寫就不對了,直接wt_date <=" + comDate + ")";就行了如果是字符串類型,需要強制類型轉換wt_date<=Convert(DataTime,102,'"+comDate+"')" 语义语句上没有问题的,就看你的数据类型是否一致了。good luck. 赞同feng2(蜀山风云),数据类型如果一致,如果对需求分析正确,SQL取得的确实是想要得结果,应该就不会有问题的ps:问问经理哪里不正确了 comDate应该使用to_date转换为date类型+ "' and wt_date <=to_date('" + comDate + "','yyyy-mm-dd HH24:MI:SS'))";其中'yyyy-mm-dd HH24:MI:SS要根据你实际传入的参数值格式修正 有点小问题,但还是跟需求相关:在求小于某日期的最大日期时,我注意到你加了个条件,autoNo=xxxx也就是说该最大日期仅仅是'xxxx'这个autoNo条件下的最大日期。但是外层的SQL中,又没有该条件,这样会把所有该日期下的记录都选择出来,而不管autoNo的条件,我认为这可能不符合你的需求。希望你能仔细检查需求,看是否有这问题。附录:SQL> create table T_WT_INFO 2 (wt_code varchar2(10), 3 wt_date date, 4 autono varchar2(10));表已创建。SQL> select * from t_wt_info;WT_CODE WT_DATE AUTONO-------------------- ---------- --------------------1 01-1月 -06 11112 02-1月 -06 11113 03-1月 -06 11114 02-1月 -06 11115 05-1月 -06 22226 01-1月 -06 11117 04-1月 -06 11118 04-1月 -06 11119 04-1月 -06 2222已选择9行。 1 select wt_code from t_wt_info 2 where wt_date = 3 (select max(wt_date) from t_wt_info 4* where autono='1111' and wt_date <= to_date('2006-01-02','yyyy-mm-dd'))SQL> /WT_CODE--------------------24SQL> ed已写入文件 afiedt.buf 1 select wt_code from t_wt_info 2 where wt_date = 3 (select max(wt_date) from t_wt_info 4* where autono='1111' and wt_date <= to_date('2006-01-04','yyyy-mm-dd'))SQL> /WT_CODE--------------------789第一个查询没问题。第二个查询将wt_code=9也选择了出来,而他的autoNo= 2222 oracle not available shared memary realm does not exist 高分寻问ORACLE生成DBF orcale 9i中文变成问好 问个ORACLE 日期转换字符遇到的问题 以下查询如何优化? oracle数据查询问题 "为什么同样表结构在不同机器上执行计划不一致"? 急..... 如何得到两个日期相减是多少年或多少月???? 散分了!!!!二进制的形式保存用哪个字段?急在线等。! ORACLE启动错误 ORACLE中一个简单的异常处理,老大们帮帮忙,在线候着 sql语句转换的问题。
经过测试语法上没有问题.
如果是字符串類型,需要強制類型轉換wt_date<=Convert(DataTime,102,'"+comDate+"')"
在求小于某日期的最大日期时,我注意到你加了个条件,autoNo=xxxx
也就是说该最大日期仅仅是'xxxx'这个autoNo条件下的最大日期。
但是外层的SQL中,又没有该条件,这样会把所有该日期下的记录
都选择出来,而不管autoNo的条件,我认为这可能不符合你的需求。
希望你能仔细检查需求,看是否有这问题。附录:
SQL> create table T_WT_INFO
2 (wt_code varchar2(10),
3 wt_date date,
4 autono varchar2(10));表已创建。SQL> select * from t_wt_info;WT_CODE WT_DATE AUTONO
-------------------- ---------- --------------------
1 01-1月 -06 1111
2 02-1月 -06 1111
3 03-1月 -06 1111
4 02-1月 -06 1111
5 05-1月 -06 2222
6 01-1月 -06 1111
7 04-1月 -06 1111
8 04-1月 -06 1111
9 04-1月 -06 2222已选择9行。 1 select wt_code from t_wt_info
2 where wt_date =
3 (select max(wt_date) from t_wt_info
4* where autono='1111' and wt_date <= to_date('2006-01-02','yyyy-mm-dd'))
SQL> /WT_CODE
--------------------
2
4SQL> ed
已写入文件 afiedt.buf 1 select wt_code from t_wt_info
2 where wt_date =
3 (select max(wt_date) from t_wt_info
4* where autono='1111' and wt_date <= to_date('2006-01-04','yyyy-mm-dd'))
SQL> /WT_CODE
--------------------
7
8
9第一个查询没问题。第二个查询将wt_code=9也选择了出来,而他的autoNo= 2222