我想为任何具有Date字段的记录进行表插入,该字段在10 minutes
之前至少为current datetime
。出于某种原因,我的表不会创建新的插入。以下是示例代码:
If Not Exists (Select * from dbo.Table where RecordName = @RecordName and DateAdd(Minute, 10, GETDATE()) >=1)
Insert Into dbo.Table (RecordName, DateField, Field3, Field4)
Value (@RecordName, GETDATE(), '0','0');
仅供参考我使用RecordName
作为参数。请帮忙!
答案 0 :(得分:1)
你的问题是:
DateAdd(Minute, 10, GETDATE()) >=1
您正在将DATETIME
与INTEGER
现在看到我的时区是11/1/2017 8:27,DateAdd(Minute, 10, GETDATE())
会给你'11/1/2017 8:37 AM' >= 1
作为DATETIME的1将评估为1900-01-02 00:00:00.000
SELECT CAST(1 AS DATETIME)
因此,您将测试何时不存在比1900-01-02 00:00:00.000
更新的时间,我认为这在数据集中不太可能。
如何纠正您的意图。您可能有一个日期/日期时间字段,如果将其与
进行比较 DATEADD(minute,-10,GETDATE())
If Not Exists (Select * from dbo.Table where RecordName = @RecordName and DateField >= DateAdd(Minute, -10, GETDATE()))
Insert Into dbo.Table (RecordName, DateField, Field3, Field4)
Value (@RecordName, GETDATE(), '0','0');