一个时间日期型字段的查询(用的是ACCESS数据库)(50分)

  • 主题发起人 主题发起人 dargon
  • 开始时间 开始时间
D

dargon

Unregistered / Unconfirmed
GUEST, unregistred user!
关于考勤方面的。我有个字段是读IC的数据。
读来的数据为‘2001-10-30 08:10:00’。
我现在利用这个字段的后半部分来查询,即‘08:10:00’和另一数据表中的排班时间及允许的范围中,即在'07:00:00'<datefield<'09:00:00'
这里的datefield就是考勤中的日期字段中的后半部分,如找到了数据则
把后半部分即时间赋予另一个数据表。
问题是怎样在SQL语句中提出时间来。
即:
select 从日期型字段中取出的时间 from table1 where (条件)

谢了。
 
各位:请帮忙?
 
只适用于ACCESS
sql:='SELECT * FROM tablename WHERE time_in>=#'+formatdatetime('yyyy/mm/dd',sdt - 1)+'# '
+' AND time_out<=#'+formatdatetime('yyyy/mm/dd',edt + 1)+'# ';
 
关注问题:朋友让我试一试先。
你等一下。
 
To:antic_ant
我要查询是时间不是日期。
请帮忙?
 
修改一下formatdatetime的格式即可,查一下formatdatetime的帮助吧
 
to:antic_ant
用FormatDateTime('hh:nn:ss',table1iodate.Value)显示是可以
但用在SQL语句中是行不通的。
你看以下的语句:
select FormatDateTime('hh:nn:ss',iodate) from iodata
这种语法是行不通的。
请指教?
 
继续讨论。我的QQ是79849773。
 
对上面问题加以补充:
我是有一个数据表中接收打卡日期(iodata)为
卡号cardno 姓名name 打卡日期iodate
1001 张先生 2001-10-30 08:10:00
1001 张先生 2001-10-30 12:00:00
1001 张先生 2001-10-30 13:30:00
1001 张先生 2001-10-30 17:30:00
还有一数据库是排班安排的(tparrange);
卡号 姓名 班次 上班时间 允许上班提前 允许上班迟到 下班时间 允许下班提前 允许下班迟到
1001 张先生 01 08:00 00:30 00:30 12:00 00:30 00:30
1001 张先生 02 13:30 00:30 00:30 17:30 00:30 00:30

现在我要用iodata中的打卡日期中的时间(用来time1来表示吧)和Tparrange中的时间比较。
如果Time1在(上班时间-允许提前时间、上班时间+允许迟到时间)此范围中那就应为上班时间(BeginTime).
在(下班时间-允许提前时间、下班时间+允许迟到时间)此范围中那就应为下班时间(EndTime).
这里的BeginTime和EndTime要赋给数据表Tparrange的。
想问这种情况用SQL语句来解决应该怎样写呢?最好是写一点源码?谢了
 
我也遇到类似的问题,用的是最笨的办法,先在一个SQL前端实验相应数据库对时间字段的
格式,再用FormatString人工生成它要求的式样。
有更好办法请说出来试一试
 
to:xddl
你是怎样实现的呢?请交流一下好吗?
 
Select TimeValue(DateTimeField) From TableName
 
Select Str(TimeValue(iodate))
from t_salelist
where Str(TimeValue(iodate))>'10:00:00'
and Str(TimeValue(iodate))<'20:00:00'

这样是完全可行的,我试过的
 
这时候,一定要用24小时制了
 
TO:LGXing 你好?你的方法也行,但有一点还需请教的。请看下面:
TO:程云 都行,我本人在此例中还有一佧问题,请帮忙?请看下面:
就是
在SQL语句中如何把时间字段中为空的提出来。
例:
卡号 姓名 上班时间 日期 记录数
1001 张先生 08:00:00 2001-10-30 1
1001 张先生 13:30:00 2001-10-30 2
1001 张先生 08:00:00 2001-10-31 3
1001 张先生 2001-11-01 4
1001 张先生 2001-11-02 5
即把记录数为4和5 的提出,这里的记录数在数据库中是没有的,这里为了更清楚的说明问题
谢了。

1001 张先生 08:00:00
 
用str函数转换过来就可以了。
SELECT * From Table Where Ltrim(Trim(Str(上班时间)))=''
其实你真不应该空时间字段。给他一个默认值多好。


 
各位在sql server2000里好像呢没那timevalue的函数的,我试过的出错的,str到有的
 
在sql server2000里如何实现此目的呢
 
怎么没人回答呢
 
在Local SQL中有专门的分离日期时间型字段的函数,列出供参考:
EXTRACT(extract_field FROM field_name)
例如:分离年使用关键字YEAR

select 姓名, EXTRACT(YEAR FROM 出生日期) AS 年 from rsd01.dbf
有以下关键字可用:
YEAR,MONTH,DAY,HOUR,SECOND
 
后退
顶部