我遇到这个问题,在DELPHI 里面的SQL 进行时间比较
我在企业上班,有这个要求。三班倒的工作人员在本日的22点后到明日的06点前属于
夜班。我必须统计这个时间段所产生的工作量。由于我使用的当前数据库是另一企业
提供的。不能对它进行修改。、它的时间字段是DATATIME类型的
如:2003-12-19 23:13:34 我要的是它23:13:34
我用如下语句
   with query1 do begin
   close;
   sql.clear;
   sql.add('select count(jzx1706) from jzx17f where  strtoint(timetostr(jzx1714))<=06  and strtoint(timetostr(jzx1714))>=22');
   open;
   end;
其中:jzx1707是统计的字段,jzx1714时间字段
执行后报错。我该如何统计?

解决方案 »

  1.   

    时间可以直接比较,不需要转换成STRING
      

  2.   

    在oracle中:
    with query1 do
      begin
      close;
      sql.clear;
      sql.add('select count(jzx1706) from jzx17f where
      to_char(jzx1714,"hh24")<="06" or to_char(jzx1714,"hh24")>="22"');
       open;
       end;
      

  3.   

    如是SQL Server,可以用DatePart函数取出日期时间的各个部分,请看联机帮助
      

  4.   

    如果要求讲究性能的话,
    请不要用DatePart,
    请用时间值的直接比较,即:
    where jzxl714 between '2003-12-19 22:00:00' and '2003-12-20 06:00:00'
      

  5.   

    where datepart(hh,日期时间字段) > =22 or datepart(hh,日期时间字段)<=6
    其中日期时间字段为时间字段,如:2003-12-19 23:13:34
      

  6.   

    是 SYBASE 的数据库。很讨厌的
    有没有更好一点的。我再加分
      

  7.   

    where jzxl714 between '2003-12-19 22:00:00' and '2003-12-20 06:00:00'
    这句话是不起作用的。我不能指定具体时间的
      

  8.   

    where jzxl714 between #2003-12-19 22:00:00# and #2003-12-20 06:00:00#
    你写的肯定不起作用,呵呵