【问题标题】:Select records from SQL Server if greater than 6 months如果超过 6 个月,则从 SQL Server 中选择记录
【发布时间】:2011-12-06 03:38:58
【问题描述】:

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

我的Customer 表如下所示:

ID (PK)  
Name  
Address  
DateLastUpdated

现在我有了这个 MySql 查询:

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

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

【问题讨论】:

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


    【解决方案1】:

    您的查询应该是:

    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))
    

    【讨论】:

    • 巴里这就是我的回答,为什么你要霸占所有的名声!! :-)
    • @Barry,现在我有这个查询,我需要每天在我的 MVC 应用程序中运行,我将如何完成这项工作?
    • 为什么需要在MVC中运行?您可以使用简单的 SQL 代理作业或 SSRS 报告来安排此操作。
    • 我正在构建一个网络应用程序,您可以在其中发送 dateUpdated 大于 6 个月的电子邮件
    • @klm9971:如果您想知道如何通过 MVC 发送电子邮件 - 无论是临时的还是预定的,您都应该为此提出一个单独的问题,因为它们是两个不同的东西。这个问题确实与TSQL有关。不要忘记包含您已经拥有的任何代码。但是有一点,Web 应用程序通常不会“执行”计划。它将是执行计划任务的另一个应用程序或服务。
    【解决方案2】:

    日期加法可以用来加减日期

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

    您可以找到更多信息here

    【讨论】:

      【解决方案3】:

      这更像是一种补充。如果您的 DateLastUpdated 包含小时/分钟/秒/毫秒组件,您可能会发现一些您希望被遗漏的记录。你总是可以做类似的事情

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

      【讨论】:

        【解决方案4】:
        SELECT * FROM users WHERE DateLastUpdated >= DATE_SUB(now(), INTERVAL 6 MONTH)
        

        【讨论】:

          【解决方案5】:

          试试:

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

          【讨论】:

            【解决方案6】:
            SELECT  *  FROM    users  
            WHERE   DateLastUpdated >= dateadd(month, -6, datelastupdated)
            

            使用 dateadd 函数。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多