问题描述
|
我是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\";
表中日期的示例是2011/6/9下午12:08:01
任何建议都会有所帮助。
谢谢
解决方法
WHERE DATEDIFF(day,People.lastmodified,GETDATE()) <= 7
, 使用日期的技巧是先使用DATEADD和其他所需内容(即创建一个范围)
declare @start datetime = ...,@end datetime = ...
然后在该范围内搜索;我通常会在开头加上结尾,因为这允许在“第10至12之间有一个简单的数据”
where row.lastmodified >= @start
and row.lastmodified < @end
除非值是整个单位(天等),否则确定范围很关键-否则平等将无法很好地发挥作用。并且简单的> =和<使用允许有效使用索引等。
, 如果这是您要查找的范围,例如从一周前开始到一周前结束的所有更改,则BETWEEN可以使此操作非常容易。
WHERE People.lastmodified BETWEEN DATEADD(week,-1,getdate()) AND DATEADD(week,-2,getdate())