我希望获得之前添加'x' minutes
的所有行。
SELECT [PromoCodeID]
,[CustomerID]
,[DiscountAmount]
,[AddedBy]
,[AddedDate]
,[ModifiedBy]
,[ModifiedDate]
FROM [tbl_PromoCodesNewCustomer]
Where....
例如: 从今天的日期开始前30分钟添加的记录
注意:记录添加日期会添加到'AddedDate'
数据类型为DATETIME
的字段中。
答案 0 :(得分:0)
编辑:
我建议您使用UTC日期和时间填充addedDate字段,否则您可能会遇到在不同服务器\时区或时间更改日之间管理数据的问题。
所以,如果我们考虑这个,那么where子句将是:
WHERE DATEDIFF(mi,addedDate,GETUTCDATE)< 30
答案 1 :(得分:0)
您可以使用:
SELECT [PromoCodeID]
,[CustomerID]
,[DiscountAmount]
,[AddedBy]
,[AddedDate] AS added
,[ModifiedBy]
,[ModifiedDate]
FROM [tbl_PromoCodesNewCustomer]
WHERE DATEADD(minute,x,added) > GETDATE()
DATEADD中的“x”是您想要的分钟数。
答案 2 :(得分:0)
我建议对FirstHorizon的答案有一个轻微的变化:
SELECT [PromoCodeID]
,[CustomerID]
,[DiscountAmount]
,[AddedBy]
,[AddedDate] AS added
,[ModifiedBy]
,[ModifiedDate]
FROM [tbl_PromoCodesNewCustomer]
WHERE AddedDate < DATEADD(minute * -1,x,getdate())
更改可能看起来很小但是根据所涉及的行数,索引以及查询优化器评估的一些其他因素,此查询可能会执行得更好,因为没有对数据进行计算。
here是一篇解释其原因的文章(请参阅第二段,&#39;在ON或WHERE子句中使用比较中的函数&#39;)。