我是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
任何建议都会有所帮助。
谢谢
答案 0 :(得分:3)
WHERE DATEDIFF(day, People.lastmodified, GETDATE()) <= 7
答案 1 :(得分:2)
日期的诀窍是使用DATEADD创建一个范围 first 以及您需要的任何其他内容,即。
declare @start datetime = ...,
@end datetime = ...
然后搜索该范围;我通常包括开始和排除结束,因为这允许简单的“第10和第12之间的数据”
where row.lastmodified >= @start
and row.lastmodified < @end
除非值是整个单位(天等),否则有一个范围是至关重要的 - 否则平等将不会很好。简单的&gt; =和&lt;使用允许有效使用索引等。
答案 2 :(得分:0)
如果它是你正在寻找的范围,例如一周前开始修改并在此前一周结束的任何内容,BETWEEN会让这很容易。
WHERE People.lastmodified BETWEEN DATEADD(week, -1, getdate()) AND DATEADD(week, -2, getdate())