CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何从表中找出每天在某一段时间内的数据

楼主dreamedge(梦缘)2004-05-04 15:44:00 在 Delphi / 数据库相关 提问

主:  
  Access   数据库    
        表tLogs的内容如下:  
            sName(姓名)               dtTime1(上机时间)             dtTime2(下机时间)  
            张三                             2004-4-20   6:10:12             2004-4-20   12:10:12    
            李四                             2004-4-20   8:10:12             2004-4-20   10:10:12    
            张三                             2004-4-21   7:30:12             2004-4-21   12:10:12    
            王五                             2004-4-21   13:10:12           2004-4-21   20:10:12    
            张三                             2004-4-21   20:30:12           2004-4-22   8:10:12    
            李四                             2004-4-22   6:10:12             2004-4-22   12:10:12    
  (1)要求找出每天上机时间在6:00:00到10:00:00上机的数据,即得到以下数据:  
            sName(姓名)               dtTime1(上机时间)             dtTime2(下机时间)  
            张三                             2004-4-20   6:10:12             2004-4-20   12:10:12    
            李四                             2004-4-20   8:10:12             2004-4-20   10:10:12    
            张三                             2004-4-21   7:30:12             2004-4-21   12:10:12    
            李四                             2004-4-22   6:10:12             2004-4-22   12:10:12    
  (2)在找出数据表里只显示时间不显示日期,即如下表  
            sName(姓名)               dtTime1(上机时间)             dtTime2(下机时间)  
            张三                                   6:10:12                           12:10:12    
            李四                                   8:10:12                           10:10:12    
            张三                                   7:30:12                           12:10:12    
            李四                                   6:10:12                           12:10:12    
  请问这样的要求能否用SQL直接得到!! 问题点数:0、回复次数:30Top

1 楼miky(miky)回复于 2004-05-04 15:51:46 得分 0

好象不行吧,SQL也不是万能的。  
  自己格式一下也不难。Top

2 楼delphiseabird(沙鸥)回复于 2004-05-04 16:03:04 得分 0

select   sname,left(convert(varchar,dttime1,111),10),left(convert(varchar,dttime2,108),10)   from   tlogs   where...  
  自己查查sql的帮助就知道了Top

3 楼hewei2003(为为)回复于 2004-05-04 16:42:15 得分 0

where   hour(dtTime1)   between   6   and   10  
  截掉日期的函数我再帮你找找Top

4 楼sousouwjh(sousouwjh)回复于 2004-05-04 17:08:02 得分 0

delphiseabird(沙鸥)   的方法好!Top

5 楼dreamedge(梦缘)回复于 2004-05-04 19:07:07 得分 0

提示出错:convert函数未定义Top

6 楼ialgu123(有心事的人)回复于 2004-05-04 21:33:09 得分 0

Select   *  
  From   表名  
  where   日期字段>=convert(datetime,convert(varchar(10),條件1,120))+1  
      and   日期字段<convert(varchar(10),條件2,120)Top

7 楼dreamedge(梦缘)回复于 2004-05-11 10:12:35 得分 0

to     ialgu123(有心事的人)    
   
  提示出错:convert函数未定义  
   
  有没有人知道的请告诉我呀  
  Top

8 楼libobo(小毕)回复于 2004-05-11 10:30:20 得分 0

你可以把数据库的结构改了,日期一个字段,时间一个字段,我是这样想的Top

9 楼qingenerp(真爱不息)回复于 2004-05-11 10:38:49 得分 0

select   *  
  from   tLogs  
  where   (datepart(hh,   'dtTime1')   >=   6)   and   (datepart(hh,   'dtTime1')   <=   10)  
  这样一定行得,你试试  
  Top

10 楼DONKEY_1(笨蛋)回复于 2004-05-11 10:40:29 得分 0

报Convert未定义的话,你要装个msowcf.dllTop

11 楼dreamedge(梦缘)回复于 2004-05-12 11:19:14 得分 0

to   libobo  
        我那数据库是万象妙管家在用的啊,数据库结构不能改  
  to   qingenerp  
        我的要求是精确到秒哦  
  to   donkey_1  
        OFFICE目录下已有这个文件,是否要装在别处,如系统目录下Top

12 楼dreamedge(梦缘)回复于 2004-05-12 11:27:22 得分 0

我用Format函数可以只显示时间,如下:  
  Select   Format(dtTime1,"hh:mm:ss"),Format(dtTime2,"hh:mm:ss")from   tLogs  
  但有个问题,在DBGrid中显示时宽度太长,我用Trim,和LTrim,Left都没有Top

13 楼fenght2004(fht)回复于 2004-05-12 11:39:57 得分 0

select   sname,dttime1,dtTime2  
  from   tlogs    
  where   convert(varchar,dtTime1,108)   between   '06:00:00'   and   '10:00:00'  
   
  select   sname,convert(varchar,dttime1,108)   as   dtTime1,  
  convert(varchar,dttime2,108)   as   dtTime2  
  from   tlogs    
  where   convert(varchar,dtTime1,108)   between   '06:00:00'   and   '10:00:00'  
  Top

14 楼dreamedge(梦缘)回复于 2004-05-12 12:23:52 得分 0

to   fenght2004  
        这个方法试了N次呀  
  提示出错:convert函数未定义  
  Top

15 楼dongliu(一沙一世界,一花一天堂)回复于 2004-05-12 12:54:02 得分 0

你用的是什么数据库?Top

16 楼dongliu(一沙一世界,一花一天堂)回复于 2004-05-12 13:15:55 得分 0

select   timevalue(dtime1)   as   上机时间   from   tlogs   where   timevalue(dttime1)>#06:10:10#   and   timevalue(dttime1)<#10:10:10#Top

17 楼fenght2004(fht)回复于 2004-05-12 14:12:15 得分 0

同意楼上的,用timevalue函数Top

18 楼dreamedge(梦缘)回复于 2004-05-12 14:50:05 得分 0

是ACCESS数据库呀,老大,你没注意我的问题哦Top

19 楼dreamedge(梦缘)回复于 2004-05-12 15:06:06 得分 0

TimeValue()-----字符串转换成时间哦  
  dtTime1,dtTime2是日期时间型字段  
  TimeValue(dtTime1)类型不符  
  Top

20 楼dreamedge(梦缘)回复于 2004-05-12 15:10:04 得分 0

我用TimeValue(Format(dtTime1,"HH:MM:SS")),但得出结果是"99-12-30   xx:xx:xx"  
   
  不加TimeValue()是可以只显示时间,但该字段占有表格长度太大  
  如   要求显示为|08:00:00|  
        结果显示为|08:00:00                                                     |Top

21 楼dongliu(一沙一世界,一花一天堂)回复于 2004-05-12 15:11:40 得分 0

谁说timevalue不行,你试了没有,用timevalue不管数据类型是日期还是文本,都没问题Top

22 楼ialgu123(有心事的人)回复于 2004-05-12 15:20:34 得分 0

where   日期字段>=條件1  
      and   日期字段<條件2  
   
  如果條件是日期加時間的話。  
  Top

23 楼fenght2004(fht)回复于 2004-05-12 15:44:38 得分 0

楼主:我试验过了,以下语句绝对行的通(#06:00:00#表达式也行)  
   
  select   sname,dttime1,dtTime2  
  from   tlogs    
  where   timevalue(dttime1)   between   '06:00:00'   and   '10:00:00'  
   
  select   sname,timevalue(dttime1)   as   dtTime1,  
  timevalue(dttime2)   as   dtTime2  
  from   tlogs    
  where   timevalue(dtTime1)   between   '06:00:00'   and   '10:00:00'Top

24 楼yutish2002(yutish)回复于 2004-05-12 16:05:19 得分 0

用delphiseabird(沙鸥)   的Top

25 楼xiaocuo_zrf(小错——淫雄所贱略同)回复于 2004-05-12 16:31:30 得分 0

Access支持convert么?  
  好像不行Top

26 楼wpwpwp(大块石头)回复于 2004-05-12 16:40:54 得分 0

dingyixia!Top

27 楼hewei2003(为为)回复于 2004-05-12 16:46:13 得分 0

呵呵,二次测试  
   
  SELECT   sName,   TimeValue(dtTime1),   TimeValue(dtTime2)  
  FROM   tLogs  
  WHERE   hour(dtTime1)   between   6   and   10;Top

28 楼qizhanfeng(glacier)回复于 2004-05-12 17:09:24 得分 0

学习Top

29 楼dreamedge(梦缘)回复于 2004-05-13 11:05:46 得分 0

哦,不好意思,昨天我试的时候可能程序本身有问题,所以试TimeValue时没注意,郑重向你们道歉一下,请原谅!  
  不过,用TimeValue()显示出来的结果是:  
            sName(姓名)               dtTime1(上机时间)             dtTime2(下机时间)  
            张三                             99-12-30     6:10:12           99-12-30     12:10:12    
            李四                             99-12-30     8:10:12           99-12-30     10:10:12    
            张三                             99-12-30     7:30:12           99-12-30     12:10:12    
            李四                             99-12-30     6:10:12           99-12-30     12:10:12Top

30 楼dreamedge(梦缘)回复于 2004-05-13 11:11:31 得分 0

用以下语句运行正常,不过找不到任何数据  
  select   sname,dttime1,dtTime2  
  from   tlogs    
  where   timevalue(dttime1)   between   '06:00:00'   and   '10:00:00'Top

相关问题

  • 有没有语句能检索出一段时间内数据发生变化的表?
  • 可不可以使到页面内的某一个列表框隔一段时间自动刷新数据,因为现在只是这个列表框的数据是从一个动态的变量得来了,而整个页面其他地方
  • 如何显示某一段时间内的数据?在线等待,高分赠送!
  • 在access创建表表后为什么要等待一段时间才能插入数据,否则表找不到,如何解决?谢谢
  • 有一考勤表,想对某一段时间考勤时间加30分钟,请问怎么做到
  • 我想每隔一段时间搜索下数据库记录。
  • 如何统计一段时间内的数据条数
  • 求助!如何查询一段时间内的数据?
  • 求助!想查一段时间内的数据.
  • 为什么在表单中输入数据时,在点击下一个输入框时,会延迟一段时间,光标才会出现?

关键词

  • 字段
  • 数据
  • dttime
  • 上机
  • 李四2004
  • 下机
  • sname
  • 日期
  • 时间
  • 姓名

得分解答快速导航

  • 帖主:dreamedge

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo