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

dreamedge 2004-05-04 03:44:00
主:
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直接得到!!
...全文
78 30 点赞 打赏 收藏 举报
写回复
30 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dreamedge 2004-05-13
用以下语句运行正常,不过找不到任何数据
select sname,dttime1,dtTime2
from tlogs
where timevalue(dttime1) between '06:00:00' and '10:00:00'
  • 打赏
  • 举报
回复
dreamedge 2004-05-13
哦,不好意思,昨天我试的时候可能程序本身有问题,所以试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:12
  • 打赏
  • 举报
回复
dongliu 2004-05-12
你用的是什么数据库?
  • 打赏
  • 举报
回复
dreamedge 2004-05-12
to fenght2004
这个方法试了N次呀
提示出错:convert函数未定义
  • 打赏
  • 举报
回复
fenght2004 2004-05-12
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'
  • 打赏
  • 举报
回复
dreamedge 2004-05-12
我用Format函数可以只显示时间,如下:
Select Format(dtTime1,"hh:mm:ss"),Format(dtTime2,"hh:mm:ss")from tLogs
但有个问题,在DBGrid中显示时宽度太长,我用Trim,和LTrim,Left都没有
  • 打赏
  • 举报
回复
dreamedge 2004-05-12
to libobo
我那数据库是万象妙管家在用的啊,数据库结构不能改
to qingenerp
我的要求是精确到秒哦
to donkey_1
OFFICE目录下已有这个文件,是否要装在别处,如系统目录下
  • 打赏
  • 举报
回复
qizhanfeng 2004-05-12
学习
  • 打赏
  • 举报
回复
hewei2003 2004-05-12
呵呵,二次测试

SELECT sName, TimeValue(dtTime1), TimeValue(dtTime2)
FROM tLogs
WHERE hour(dtTime1) between 6 and 10;
  • 打赏
  • 举报
回复
wpwpwp 2004-05-12
dingyixia!
  • 打赏
  • 举报
回复
xiaocuo_zrf 2004-05-12
Access支持convert么?
好像不行
  • 打赏
  • 举报
回复
yutish2002 2004-05-12
用delphiseabird(沙鸥) 的
  • 打赏
  • 举报
回复
fenght2004 2004-05-12
楼主:我试验过了,以下语句绝对行的通(#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'
  • 打赏
  • 举报
回复
ialgu123 2004-05-12
where 日期字段>=條件1
and 日期字段<條件2

如果條件是日期加時間的話。
  • 打赏
  • 举报
回复
dongliu 2004-05-12
谁说timevalue不行,你试了没有,用timevalue不管数据类型是日期还是文本,都没问题
  • 打赏
  • 举报
回复
dreamedge 2004-05-12
我用TimeValue(Format(dtTime1,"HH:MM:SS")),但得出结果是"99-12-30 xx:xx:xx"

不加TimeValue()是可以只显示时间,但该字段占有表格长度太大
如 要求显示为|08:00:00|
结果显示为|08:00:00 |
  • 打赏
  • 举报
回复
dreamedge 2004-05-12
TimeValue()-----字符串转换成时间哦
dtTime1,dtTime2是日期时间型字段
TimeValue(dtTime1)类型不符
  • 打赏
  • 举报
回复
dreamedge 2004-05-12
是ACCESS数据库呀,老大,你没注意我的问题哦
  • 打赏
  • 举报
回复
fenght2004 2004-05-12
同意楼上的,用timevalue函数
  • 打赏
  • 举报
回复
dongliu 2004-05-12
select timevalue(dtime1) as 上机时间 from tlogs where timevalue(dttime1)>#06:10:10# and timevalue(dttime1)<#10:10:10#
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
数据库相关
加入

2462

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2004-05-04 03:44
社区公告
暂无公告