【问题标题】:SQL statement to get data from a week back?获取一周前数据的 SQL 语句?
【发布时间】:2011-09-15 18:43:34
【问题描述】:

我是 SQL 语句的新手,根据修改日期获取一周前的数据时遇到了一些麻烦。

   SELECT People.first, People.last, company.companyname, People.lastmodified
   FROM job_prof 
   INNER JOIN People ON job_prof.cid = People.cid 
   INNER JOIN company ON job_prof.Id = company.id
-> WHERE   People.lastmodified = DATE(DATE_ADD(GETDATE(), INTERVAL -7 DAY))
   ORDER BY People.lastmodified DESC";

表格中的日期示例是 6/9/2011 12:08:01 PM

任何建议都会有所帮助。

谢谢

【问题讨论】:

  • 您想要的确切范围是多少?一周前有什么修改吗?仅在上周进行的任何修改?

标签: c# sql web-applications


【解决方案1】:

如果它是您要查找的范围,例如从一周前开始到一周前结束的任何修改,BETWEEN 让这变得非常容易。

WHERE People.lastmodified BETWEEN DATEADD(week, -1, getdate()) AND DATEADD(week, -2, getdate())

【讨论】:

    【解决方案2】:
    WHERE  DATEDIFF(day,  People.lastmodified, GETDATE()) <= 7
    

    【讨论】:

    • 知道了! WHERE DATEDIFF(day, GETDATE(), People.lastmodified) >= -7 谢谢@Bara R 也谢谢大家:)
    • 请记住,如果您打算忽略时间,您可能需要在日期比较中截断时间部分。
    • 回到两周怎么样...所以不是上周而是两周前 (stackoverflow.com/questions/26021347/…)
    【解决方案3】:

    日期的诀窍是first 使用 DATEADD 以及您需要的任何其他内容创建一个范围,即

    declare @start datetime = ...,
            @end datetime = ...
    

    然后在那个范围内搜索;我通常包括开始并排除结束,因为这允许简单的“第 10 和第 12 之间的数据”

    where row.lastmodified >= @start
    and   row.lastmodified < @end
    

    除非值是完整的单位(天等),否则范围至关重要 - 否则平等将无法很好地工作。并且简单的 >= 和

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多