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

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直接得到!!
...全文
100 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
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#
加载更多回复(10)

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧