SQL存储过程中的嵌套if语句错误。期待),和,或

SQL存储过程中的嵌套if语句错误。期待),和,或,sql,stored-procedures,Sql,Stored Procedures,我正在尝试编写一个存储过程,该过程将检查表中某列中的datetime值是否在该列中只有一个值。如果它存在,我想看看datetime值是否在当前时间的+-5分钟内。如果是,那么我将执行另一个存储过程,然后更新该日期时间 如果该值根本不存在,那么我将在列中插入当前日期 IF ( @DateToKeepForTrim >= dateadd(MINUTE,-5,(SELECT top 1 TrimCheck.TrimCheckDate FROM TrimCheck)) AND @Date

我正在尝试编写一个存储过程,该过程将检查表中某列中的datetime值是否在该列中只有一个值。如果它存在,我想看看datetime值是否在当前时间的+-5分钟内。如果是,那么我将执行另一个存储过程,然后更新该日期时间

如果该值根本不存在,那么我将在列中插入当前日期

    IF ( @DateToKeepForTrim >=  dateadd(MINUTE,-5,(SELECT top 1 TrimCheck.TrimCheckDate FROM TrimCheck)) AND @DateToKeepForTrim <= dateadd(MINUTE,5, @DateToKeepForTrim)
应改为:

    IF ( @DateToKeepForTrim >=  dateadd(MINUTE,-5,(SELECT top 1 TrimCheck.TrimCheckDate FROM TrimCheck)) AND @DateToKeepForTrim <= dateadd(MINUTE,5, @DateToKeepForTrim) )

请不要使用不适用于您的问题的标记。我删除了数据库标签,因为不清楚您实际使用的是哪一个。请仅添加您实际使用的数据库的标记。过程代码(如存储过程)是高度特定于供应商的-因此,请添加标记以指定您使用的是mysql、postgresql、sql server、oracle还是db2-或其他完全不同的数据库。您应该删除现有数据库中的前1个。这是不必要的。另外,当您设置变量时,您有top 1,但没有order by,因此您不知道将得到哪一行。最后但并非最不重要的一点……查看嵌套IF中的AND谓词。您正在将变量与同一变量的计算值进行比较。这里有一些逻辑问题,但不太确定要做什么。@SeanLange此表中只有一行。一行一列,只是为了记录日期。我正在通过添加24小时来更新该变量。如果只有1个变量,为什么还要麻烦键入top 1然而,真正的问题是谓词有严重的逻辑问题。您正在将相同的值与自身进行比较。设置变量,然后检查其值是否与添加到相同值的日期一致。无论你在哪一天找到它,它都会评估你的内心是否真实。您需要将变量与getdate进行比较