DATEDIFF interval=ms的用法

本文介绍在SQL中使用DATEDIFF函数时遇到的问题:当日期差超过24天时,DATEDIFF(ms)会出错。文章提供了一种解决方案,通过调整函数使用方式避免错误发生,并确保日期差计算正确。

datediff(ms,@CurrDateTime,@Date)>0

上面的日期超过24天,用上面的sql会有问题

要修改成如下:

 (CONVERT(VARCHAR,@CurrDateTime,111)=CONVERT(VARCHAR,@Date,111) AND datediff(ms,@CurrDateTime,@Date)>0)

OR (CONVERT(VARCHAR,@CurrDateTime,111)<>CONVERT(VARCHAR,@Date,111) AND datediff(d,@CurrDateTime,@Date)>0))

 

For your references:

 

http://technet.microsoft.com/en-us/library/aa258269(v=sql.80).aspx

 

“DATEDIFF produces an error if the result is out of range for integer values. For milliseconds, the maximum number is 24 days, 20 hours, 31 minutes and 23.647 seconds. For seconds, the maximum number is 68 years.”

 

转载于:https://www.cnblogs.com/oliver_zh/p/3685996.html

Option Explicit ' 声明Windows API函数 Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As Long) Private WithEvents Timer1 As MSForms.Timer Private wsh As Object Private objWnd As Object Private LastSwitchTime As Date ' 记录上次切换时间 Private Sub Form_Load() On Error Resume Next Set wsh = CreateObject("WScript.Shell") ' 创建提示窗口 Set objWnd = wsh.Exec("mshta.exe ""about:<title>运行中</title><body bgcolor=white><center><h1>运行中</h1><p>自动打开网页并切换标签页<br>每分钟自动切换标签页<br>关闭此窗口停止程序</p></center><script>window.resizeTo(800,400);window.moveTo((screen.width-800)/2,(screen.height-400)/2);</script>""") If Err.Number <> 0 Then MsgBox "提示窗口创建失败: " & Err.Description Exit Sub End If ' 初始化定时器 Set Timer1 = New MSForms.Timer Timer1.Interval = 1000 ' 1秒检测一次 Timer1.Enabled = True ' 打开浏览器窗口 OpenBrowserUrls End Sub Private Sub OpenBrowserUrls() Dim browserPath As String Dim urls(1 To 4) As String ' 4个URL browserPath = GetEdgePath() ' 动态获取Edge路径 ' 简化的URL(实际使用时替换为完整URL) urls(1) = "http://192.168.10.81/decision/view/form?viewlet=..." ' 当日出勤 urls(2) = "http://192.168.154.11:4000/gridWebAndon/revoAssembly_Allparts" ' #12线装配安东 urls(3) = "http://192.168.10.81/decision/view/form?viewlet=..." ' 人员管理板 urls(4) = "http://192.168.154.11:5000/gridWebAndon/revoAllparts" ' #12线加工安东 Dim i As Integer For i = 1 To 4 ' 打开浏览器窗口 wsh.Run Chr(34) & browserPath & Chr(34) & " " & Chr(34) & urls(i) & Chr(34) DoEvents ' 等待页面加载 Sleep 2000 ' 确保窗口激活后再发送F11 ActivateEdgeWindow Sleep 500 ' 短暂延迟确保激活完成 wsh.SendKeys "{F11}" Next i ' 额外确保最后一个窗口全屏 ActivateEdgeWindow Sleep 500 wsh.SendKeys "{F11}" LastSwitchTime = Now ' 初始化切换时间 End Sub ' 动态获取Edge浏览器路径 Private Function GetEdgePath() As String On Error Resume Next ' 尝试从注册表获取Edge路径 GetEdgePath = wsh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe\") If Err.Number <> 0 Or GetEdgePath = "" Then ' 如果注册表获取失败,尝试备用路径 GetEdgePath = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" End If End Function ' 激活Edge窗口 Private Sub ActivateEdgeWindow() Dim maxAttempts As Integer maxAttempts = 5 Do While maxAttempts > 0 On Error Resume Next wsh.AppActivate "Microsoft Edge" If Err.Number = 0 Then Exit Do Sleep 1000 maxAttempts = maxAttempts - 1 Loop End Sub Private Sub Timer1_Timer() ' 每1分钟切换一次标签页 If DateDiff("s", LastSwitchTime, Now) >= 60 Then ActivateEdgeWindow Sleep 500 ' 确保窗口激活 wsh.SendKeys "^{TAB}" ' Ctrl+Tab切换标签页 LastSwitchTime = Now End If End Sub ' 自定义Sleep函数(毫秒) Private Sub Sleep(ms As Long) Dim endTime As Date endTime = DateAdd("s", ms / 1000, Now) Do While Now < endTime DoEvents Loop End Sub ' 窗体卸载时清理资源 Private Sub Form_Unload(Cancel As Integer) If Not objWnd Is Nothing Then If objWnd.Status = 0 Then objWnd.Terminate End If Set Timer1 = Nothing Set wsh = Nothing End Sub 语句未结束
08-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值