怎样编写时间比较SQL?

RayLynn 2006-01-25 10:06:32
我这里写了一句SQL,是指用户检索表中的数据,判断该数据是否LastTime 过期。
CREATE PROCEDURE dbo.Sp_IsOverDue
AS
DATEDIFF(SECOND,CONVERT(DATETIME,(SELECT TOP 1 LastTime FROM LastTable)),@Date) <= 0

...

用这种方法出现了一个异常:
两个 datetime 列的差别导致了运行时溢出。

请问该怎么办?
...全文
577 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
OracleRoob 2006-01-25
  • 打赏
  • 举报
回复
declare @dt datetime
set @dt=convert(datetime,(select top 1 lasttime from lasttable))

--比较同一分钟内,同时比较秒数是否相同
datediff(mi,@dt,@date)=0 and second(@dt)=second(@date)
mislrb 2006-01-25
  • 打赏
  • 举报
回复
改成这样试试
cast(DATEDIFF(mi,CONVERT(DATETIME,(SELECT TOP 1 LastTime FROM LastTable)),@Date) as bigint)*60<0
RayLynn 2006-01-25
  • 打赏
  • 举报
回复
不可以呀``我必须用秒。本来还想用豪秒的``
难道没有其他办法了吗?
bugchen888 2006-01-25
  • 打赏
  • 举报
回复
DATEDIFF函数的返回类型是integer。
integer长度为 4 个字节,存储从 -2147483648 到 2147483647 的数字。
2147483647秒换算成年份大概69年.

如果你这里只是比较大小的话可否换成以小时或者天为单位来比较。不容易溢出。
RayLynn 2006-01-25
  • 打赏
  • 举报
回复
就是比较两个日期时,必须使用秒来比较,然后出现益出现象!~

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧