以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于时间的比较  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=88925)

--  作者:luodang2050
--  发布时间:2016/8/11 17:52:00
--  关于时间的比较
如题,SQL数据库时间精确到ms,但狐表加载后数据最高精确到秒,比较上会造成误差,从而引发一些小bug,请问狐表加载数据怎么精确到ms呢?
--  作者:大红袍
--  发布时间:2016/8/11 18:51:00
--  

 可以编写代码规避的啊。

 

 比如你之前写 某列 = \'2016-08-11 18:48:01\'

 

 现在写成 某列 >= \'2016-08-11 18:48:01\' and 某列 < \'2016-08-11 18:48:02\'

 

 或者是,强制转换sqlserver的值为去掉ms的格式


--  作者:cbt
--  发布时间:2016/8/11 22:28:00
--  

\'不知道是不是这样

output.show(DateTime.Now & " " & DateTime.Now.Millisecond)


--  作者:luodang2050
--  发布时间:2016/8/12 21:27:00
--  

写了函数,发现你的更简洁、、

\'函数调用0===================
\'Functions.Execute("时间转高精度文本",t,[取整方式],[精确小数位数])
\'20160811将date类型转string类型,同时对比cstr(date),可提高精确度
\'返回"yyyy-MM-dd hh:mm:ss.***"
\'取整方式:0四舍五入,1向上取整,-1向下取整
\'函数调用1===================
Dim t As Date = args(0)
Dim 取整方式 As Integer = 0
If args.length > 1
    取整方式 = args(1)
End If
Dim 精确小数位数 As Integer = 3
If args.length > 2
    精确小数位数 = args(2)
End If
Dim s As String = CStr(t)  \'默认转化会自动舍弃小数部分
Dim t2 As Date = CDate(s) 
Dim n As Double =  (t-t2).Totalseconds * 10^精确小数位数
Dim i As Integer
Select Case 取整方式
    Case 0
        i = math.Round(n)
    Case -1
        i = math.Floor(n)
    Case 1
        i = math.Ceiling(n)
End Select
Dim t3 As String
If i = 0
  t3=s
Else
 t3 = s & "." & i
End If
Return t3