Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> VBA  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1702226
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何对两个时间相加?多个日期时间作为条件进行对比判断的问题

作者:cg1  摘自:access911.net  :cg1  更新日期:2004-7-18  浏览人次:

 

问题:

怎样在Access中累加时间!

例如:

8:22+23:12=31:34

而不是 7:34

 


回答:



'按 Alt+F11 转到 Visual Basic Editor 界面
'“插入”一个“模块”,将下列代码复制进去
'按 Ctrl+G 打开“立即”窗口
'然后将光标停留在"Function TimeSumExplain()" 这行上
'按 F5 运行代码,得到结果

Function TimeSumExplain()
    Dim dteA As Date
    Dim dteB As Date
    Dim dteC As Date
    Dim dblDiff As Double
    dteA = "08:22"
    '注意,这里利用了 VBA 的一个特性:VBA会自动转换数据类型,
    '从字符自动转换为日期时间型,如果直接赋值日期时间型数据应该如下
    'dteA = #8:22:00 AM#

    dteB = "23:12"  '#11:12:00 PM#
    Debug.Print "完整表示的dteA:" & Format(dteA, "yyyy年mm月dd日 hh小时mm分钟ss秒")
    Debug.Print "完整表示的dteB:" & Format(dteB, "yyyy年mm月dd日 hh小时mm分钟ss秒")
    dteC = dteA + dteB
    Debug.Print "完整表示的dteA 与 dteB 相加的结果:" & Format(dteC, "yyyy年mm月dd日 hh小时mm分钟ss秒")
    '请查看“立即窗口”
    '你会得到如下结果:
    '“完整表示的dteA:1899年12月30日 08小时22分钟00秒”
    '“完整表示的dteB:1899年12月30日 23小时12分钟00秒”
    '“完整表示的dteA 与 dteB 相加的结果:1899年12月31日 07小时34分钟00秒”
    '也就是说,虽然你写的是时间而没有附加日期,但是一旦你使用日期时
    '间型数据类型(虽然显示出来也没有日期),系统会自动附加上日期。

    dblDiff = DateDiff("s", "00:00:00", dteC)
    '使用 DateDiff 函数来确定两个时间值间隔的秒数,也就是 dteA + dteB 等于多少时间
    '注意,这里的 "00:00:00" 表示一个初始时间,要累加时间必须与这个初始时间进行比较

    Debug.Print "dteC与初始时间相差的秒数:" & dblDiff
    Debug.Print timeCovent(dblDiff)
    
End Function

Function timeCovent(ByVal dblDiff As Double) As String
'本函数的作用是将两个时间间隔的秒数转换为“N天N小时N秒”这样的格式
'你要得到其他格式也可以自己写函数

    Dim strCheck(3)
    strCheck(0) = CStr(dblDiff Mod 60) & "秒"
    strCheck(1) = CStr(dblDiff \ 60 Mod 60) & "分"
    strCheck(2) = CStr(dblDiff \ 60 \ 60 Mod 24) & "小时"
    strCheck(3) = CStr(dblDiff \ 60 \ 60 \ 24) & "天"
    
    Dim i As Integer
    For i = 0 To 3
        If Left(strCheck(i), 1) = "0" Then
            strCheck(i) = ""
        End If
    Next
    
    timeCovent = strCheck(3) & strCheck(2) & strCheck(1) & strCheck(0)
End Function


 

问题:

在ACCESS数据库中,我添加了一条纪录,可是日期中代有时间。如:2001-12-02 21:12:10
我不想要时间,只想要日期的格式。

 

回答:

你需要弄清楚概念性问题
 ACCESS 中日期时间字段即使你只定义了日期,没有定义时间,系统仍然会附加上默认的时间,只要你在显示的时候用 FORMAT 或者 FORMATDATETIME 函数格式化一下就可以了

 


问题:

如果有表1
工班  开始时间  结束时间
早班  08:00    16:00
中班  16:00    00:00
夜班  00:00    08:00

我 有表2 ,其中有个时间字段,比如其中有一条记录的时间为2006-10-08 03:07:05 ,我如何判断它是属于夜班的?

 

 

回答:

SELECT 班次表.班次名, 查询1.员工姓名, 查询1.打卡时间
FROM 
(
    SELECT 打卡表.id, 打卡表.员工姓名, 打卡表.打卡时间, FormatDateTime([打卡时间],3) AS 只有时间
    FROM 打卡表
) as 查询1
INNER JOIN 班次表 ON (查询1.只有时间<班次表.下班时间) AND (查询1.只有时间 > 班次表.上班时间);

示例:http://access911.net/down/eg/FormatDateTime_1.rar
 (12KB)

还有一些日期判断问题,比如只输入 月份-日期 如何对某个日期字段进行判断
http://bbs.bbezone.com/viewthread.php?tid=236&pid=513&page=1&extra=#pid513

 


本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何使本机时间与服务器时间同步?
     如何让 ACCESS 自动定时执行某段代码?
     如何计算两个时间间隔并转换成“N天N小时N分N秒”这样的形式?
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利