读书人

delphi操作oracle有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

delphi操作oracle问题
sqlstr:string
sqlstr :='select * from tbtablename where 1=1';
现在oracle表tbtablename 中有一个字段time 他的类型是TIMESTAMP.
我想实现查找某一段时间的数据.条件应该怎么写?
如条件的开始时间是begintime : TDate;
结束时间是endTime :TDate;
请高手救救急 ,谢谢

[解决办法]
oracle的时间格式与环境设置NLS_LANG有关
如果它为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
那么它的格式为:13-10月-11
所以必须用to_char(time,'yyyy-mm-dd')转
而delphi也必须用
FormatDateTime('yyyy-mm-dd',endTime)
(设定二者都不含时间)
且要注意的是,你系统的区域格式也要是中文的年-月-日格式,否则还要改delphi中的TimeSeparator

SQL语句大致如下(我未测试)
sqlstr :='select * from tbtablename where to_char(time,''yyyy-mm=dd'') between '''+FormatDateTime('yyyy-mm-dd',begintime)+''' and '''+FormatDateTime('yyyy-mm-dd',endtime)+''';

所以在数据中设定日期格式是很复杂的事,且不利数据库的移植,所以我们一般用格式化的字串代替时间格式

读书人网 >.NET

热点推荐