SQL日期类型
在做机房收费系统的时候,上下机,我觉得是我在整个系统中遇到最棘手的问题了,现在就给大家,分享一下,我是怎样解决的。
SQL中有3中数据类型是关于日期的,每一种的用法是不同的,当你用错了,就会出现下面这样的错误:
SQL的日期类型有以下几种:
机房收费系统用到了date datetime2(n)以及time(n),就这样的类型,我简单地说一下,大致有了了解,就可以熟练运用了,首先,举个列子,现在的时间是2013/9/15 21:32 ,
用date就是2013/9/15
用datetime2(0)就是2013/9/15 21:32:00
用time(0)那么就是21:32:00
记住n的值就是小数点的位数,一般不用精准计算的,用不到这个。
现在具体分析一下机房收费系统,是要计算收费时间的,我认为最简单的方法就是最有效的方法,不要将时间分开,直接就让2个日期相减就对了。
上机记录表(online)中是要修改的:
那么现在我在其中添加一列这样:
利用这组数据,问题就会迎难而解了。
代码如下:
txtsql = "select * from online_info where cardno='" & Mod_Card & "'" 'online表中删除数据 Set mrc = ExecuteSQL(txtsql, msgtext) If Not mrc.EOF Then Ondate = mrc.Fields(9) mrc.Delete Else MsgBox "online表中没有这样一天记录", vbOKOnly + vbExclamation, "警告" End If
If mrc.EOF = True Then MsgBox "line表没有数据可用", vbOKOnly + vbExclamation, "警告" Else Mod_ConsumeTime = DateDiff("n", Ondate, Now) '得到的时间 End If
这样看再用datediff函数轻而易举就可以解决隔天的时间问题。