select count(*) from (
select DNAorderno,Order_no,LTime,Settledate,Pay_fee,Commimission,Tel,order_Status,Order_Type
from(select b.orderno DNAorderno,a.order_no,a.add_time as LTime,b.settledate,a.pay_fee,null as Commimission,Tel,order_Status,Order_Type from ercp_t_order a
left join ercp_payresult b on a.order_no=b.reference where a.pay_id=5 and a.pay_status=1 )
where ( LTime >='2012-02-19 00:00:00.000' and LTime<='2012-03-19 23:59:59.999' and 1=1 ) ) t
LTime >='2012-02-19 00:00:00.000' and LTime<='2012-03-19 23:59:59.999' 就是这句错啦,为什么字段类型自动变成字符串呢?
我想包一层,写个通用的语句。
谢谢。
我将
LTime >='2012-02-19 00:00:00.000' and LTime<='2012-03-19 23:59:59.999'
放到括号里是可以的。我不放的原因是还有其他的表查询,他们的条件也一样,就是字段名不一样。
所以我想包一层。条件全部统一
oracle普通的DATE类型不支持秒以后的格式,且一定要进行类型转换。
'2012-02-19 00:00:00.000'应改为LTime >= to_date('2012-02-19 00:00:00','yyyy-mm-dd hh24:mi:ss')
select count(*) from (
select DNAorderno,
Order_no,
LTime,
Settledate,
Pay_fee,
Commimission,
Tel,
order_Status,
Order_Type
from(select b.orderno
DNAorderno,
a.order_no,
a.add_time as LTime,
b.settledate,
a.pay_fee,null as Commimission,
Tel,order_Status,
Order_Type
from ercp_t_order a
left join ercp_payresult b on a.order_no=b.reference
where a.pay_id=5 and a.pay_status=1
) test
where test.LTime >=to_date('2012-02-19 00:00:00.000','你需要的日期格式') and test.LTime<=to_date('2012-03-19 23:59:59.999','你需要的日期格式') and 1=1
) t