如何从表中找出每天在某一段时间内的数据
主:
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




