如果Date字段在当前时间之前,则插入新表

时间:2017-11-01 15:11:52

标签: sql sql-server sql-insert not-exists

我想为任何具有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作为参数。请帮忙!

1 个答案:

答案 0 :(得分:1)

你的问题是:

DateAdd(Minute, 10, GETDATE()) >=1

您正在将DATETIMEINTEGER

进行比较

现在看到我的时区是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');