ORACLE中的日期字段的问题!郁闷!(50分)

L

liuyang

Unregistered / Unconfirmed
GUEST, unregistred user!
ORCALE中条件是日期的只能这么写
select * from renkou3 where csrq=to_date('1976-11-26','yyyy-mm-dd')
怎么才能通过什么语句什么配置
能这样查询:
select * from renkou3 where csrq='1976-11-26'
因为我的条件是动态生成的。字段=‘内容’
先判断日期型不可行
请告诉我有什么办法
 
用字符型字段(Varchar)来作为日期型字段用,在Oracle中字符型字段可以使用Min(), Max(),
Between, >, <, = 等,真是应有尽有,比使用日期型字段还好用。(缺点是浪费存储空间)
 
你先将你的日期符字段转化成格式化的字串,再放进去不就行了。
 
table1.sql.add('select * from renkou3 where csrq=:d');
table1.sql.params[0].value:=strtodate('1976-11-26');
 
两种方法:
1.修改注册表,在Session请求端的注册表里添加
Hkey_Local_Machine/Software/Oracle/Nls_Date_Format (字符串,值:YYYY-MM-DD);
或者(Oracle 8i up)在All_home下添加Nls_Date_Format (字符串,值:YYYY-MM-DD);
2.在建立一个Session请求后,使用Sql语句:
Alter Session set Nls_Date_Format='YYYY-MM-DD';
最明显的例子就是打开Sql Plus,登陆后,执行下列语句,比较一下
select sysdate from dual;
Alter Session set Nls_Date_Format='YYYY-MM-DD';
select sysdate from dual;
不过该方法明显有个不足,就是只对当前Session起作用,我经常把她放在程序的最开始使用,保证无论Net8怎么配置,Oracle怎么格式化时间,我都能自己控制格式
-------------------------------------
在执行上述语句后,你就可以执行
select * from renkou3 where csrq='1976-11-26'
一般说来修改注册表比较彻底
 
使用存储过程比较好,
 
建议采用sanoul的第一种方法,简单彻底
 
接受答案了.
 
顶部