如果超过6个月,请从SQL Server中选择记录

时间:2011-10-12 13:30:16

标签: c# sql-server asp.net-mvc asp.net-mvc-3

我正在创建一个MVC应用程序,我需要向DateUpdated表中未更新其值(Customer)的所有记录发送电子邮件。

我的Customer表格如下:

ID (PK)  
Name  
Address  
DateLastUpdated

现在我有了这个MySql查询:

 SELECT * FROM users WHERE DateLastUpdated >= NOW() - INTERVAL 6 MONTH 

我将如何在T-SQL中编写它并在MVC3中执行此任务?请帮忙!

6 个答案:

答案 0 :(得分:7)

您的查询应该是:

SELECT * FROM users WHERE DateLastUpdated >= DateAdd(month, -6, getdate())

此外,您可能想要删除时间部分,这样您只剩下日期,例如2011-04-12 00:00:00.000你可以使用它:

SELECT  *  
FROM    users  
WHERE   DateLastUpdated >= DateAdd(Month, -6, Cast(Floor(Cast(GetDate() as Float)) as DateTime))

答案 1 :(得分:1)

日期添加功能可用于添加和减去日期

SELECT  *  FROM    users  WHERE   DateLastUpdated >= DateAdd(month, -6, getDate())

您可以找到更多信息here

答案 2 :(得分:1)

这更像是一个补充。如果您的DateLastUpdated具有小时/分钟/秒/毫秒组件,您可能会发现一些您希望被遗漏的记录。你可以随时做点什么

SELECT * FROM users WHERE CONVERT(DATETIME, CONVERT(NVARCHAR(10), DateLastUpdated, 102), 102) >= DateAdd(month, -6, getdate())

答案 3 :(得分:0)

尝试:

SELECT * FROM users
WHERE DateLastUpdated >= DATEADD(Month, -6, GETDATE())

答案 4 :(得分:0)

SELECT  *  FROM    users  
WHERE   DateLastUpdated >= dateadd(month, -6, datelastupdated)

使用dateadd功能。

答案 5 :(得分:0)

SELECT * FROM users WHERE DateLastUpdated >= DATE_SUB(now(), INTERVAL 6 MONTH)