当前位置:编程学习 > VB >>

为什么用类型转换函数CDate()不能将从数据库中取出的文本类型的值转换成日期时间类型?

为什么我用类型转换函数CDate()不能将从数据库中取出的文本类型的值转换成日期时间类型?
CDate(rs(1))- CDate(rs(2))

其中:rs(1)的内容为:2006/12/01 18:46:00:000
      rs(2)的内容为:2006/11/30 18:21:00:000
我想得到这2个数的差值,即得到得到时间的差,得到2个文本框内时间的差!

用datediff函数好象是不可以的!
我用的是ACCESS
--------------------编程问答-------------------- 要精确到毫秒这种方法肯定不行 --------------------编程问答-------------------- 精确到秒也行啊!用什么方法啊!急等!
--------------------编程问答-------------------- 怎么就不能转换成datetime 类型呢?那样就好办了!
--------------------编程问答--------------------
精确到分也行啊,比如:11:03
相差11小时3分 --------------------编程问答-------------------- 因为date数据类型可以表示的日期范围从 100 年 1 月 1 日到 9999 年 12 月 31 日,而时间可以从 0:00:00 到 23:59:59,所以要精确到毫秒datediff不行。

你可以取位到秒,用datediff计算到秒,毫秒另外计算后和秒的结果一起换算累加


--------------------编程问答-------------------- 看来要用程序来实现了,任何函数都实现不了! --------------------编程问答-------------------- 你是SQL数据库?那用cast直接转换一下到datetime就可以用SQL语句解决了 --------------------编程问答-------------------- SQL数据库的话就如:
select datediff("d",cast(dt1 as datetime),cast(dt2 as datetime) as dt from tb --------------------编程问答-------------------- 我现在只计算时间了,比如求18:46与07:58的差,还是有问题?

Dim diffH As Integer
Dim diffM As Integer

    diffH = Left(Mid(rs(3), 12, 19), 2) - Left(Mid(rs(2), 12, 19), 2)
    If Right(Left(Mid(rs(3), 12, 19), 5), 2) >= Right(Left(Mid(rs(2), 12, 19), 5), 2) Then
       diffM = Right(Left(Mid(rs(3), 12, 19), 5), 2) - Right(Left(Mid(rs(2), 12, 19), 5), 2)
    Else
       diffM = 60 + Right(Left(Mid(rs(3), 12, 19), 5), 2) - Right(Left(Mid(rs(2), 12, 19), 5), 2)
       diffH = diffH - 1
    End If --------------------编程问答-------------------- 对不起,刚才的程序是对的,可是要放到文本框里时出现了问题!
我是这样写的:      
       .TotalRollingTime = diffH + ":" + diffM

系统告诉我类型不对!

要如何写呢? --------------------编程问答-------------------- this way:
 .TotalRollingTime = CStr(diffH) + ":" + CStr(diffM)

I get it! it works!

thank you vbman2003(家人) !
have a nice day!
补充:VB ,  资源
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,