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

解决方案 »

  1.   

    oracle的时间格式与环境设置NLS_LANG有关
    如果它为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    那么它的格式为:13-10月-11
    所以必须用to_char(time,'yyyy-mm-dd')转
    而delphi也必须用
    FormatDateTime('yyyy-mm-dd',endTime)
    (设定二者都不含时间)
    且要注意的是,你系统的区域格式也要是中文的年-月-日格式,否则还要改delphi中的TimeSeparatorSQL语句大致如下(我未测试)
    sqlstr :='select * from tbtablename where to_char(time,''yyyy-mm=dd'') between '''+FormatDateTime('yyyy-mm-dd',begintime)+''' and '''+FormatDateTime('yyyy-mm-dd',endtime)+''';所以在数据中设定日期格式是很复杂的事,且不利数据库的移植,所以我们一般用格式化的字串代替时间格式