我现在数据库里面的日期是用varchar类型, 然后我现在用string字符串去查询在此时间类的数据
如 数据库表TableA有一个字段 date 类型 varchar
A
20080809155348
20080810155348
20080821155348然后我现在要用String startRq = "20080809"; String endRq="20080827";查出在此期间的数据;我该怎么写sql语句,是不是都要把他们转换为date类型再用between来取;
sql="select * from TableA a where to_date(a.date,'yyyy-mm-dd') between to_date(startRq,'yyyy-mm-dd') and to_date(endRq,'yyyy-mm-dd') ";
如 数据库表TableA有一个字段 date 类型 varchar
A
20080809155348
20080810155348
20080821155348然后我现在要用String startRq = "20080809"; String endRq="20080827";查出在此期间的数据;我该怎么写sql语句,是不是都要把他们转换为date类型再用between来取;
sql="select * from TableA a where to_date(a.date,'yyyy-mm-dd') between to_date(startRq,'yyyy-mm-dd') and to_date(endRq,'yyyy-mm-dd') ";
--直接用就是了:
sql="select * from TableA a where substr(a.date,1,8) between startRq and endRq ";
用to_date 可以吗?、 哪个速度会比较快点??
由于你TableA有一个字段 date是varchar2类型的,不是DATE类型,因此这样是错误的_char(a.date,'yyyy-mm-dd')
varchar2类型,可以直接用between and --直接用就是了:
sql="select * from TableA a where substr(a.date,1,8) between startRq and endRq ";
----字母可以用to_char startRq = "20080809"; String endRq="20080827"; 这个用还碰巧是对了
----如果是startRq = "20080831"; String endRq="20080901";那计算不是70天啊,本来只相隔2天
select *
from TableA a
where to_date(a.date, 'yyyy-mm-dd') between to_date(startRq, 'yyyy-mm-dd') and
to_date(endRq, 'yyyy-mm-dd')
我忘记一个东西了
String startRq = "2008-08-09"; String endRq="2008-08-27";这样格式的;那我岂不是还要把这些查询条件转换为20080809这样格式的, 感觉这样的话 我用to_date更方便了。 请问哪个比较好??
这里只能用to_date, 不能用to_char