2011-06-15 80 views
3

我是SQL語句新手,根據修改日期從一週前獲取數據時遇到了一些麻煩。從一週前獲取數據的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秒

任何建議將是有益的。

謝謝

+0

什麼是你想要的確切範圍?一週前有什麼修改?任何只在上週修改過的東西? – 2011-06-15 18:23:06

回答

3
WHERE DATEDIFF(day, People.lastmodified, GETDATE()) <= 7 
+0

明白了! WHERE DATEDIFF(日,GETDATE(),People.lastmodified)> = -7 感謝@Bara [R 而 謝謝大家:) – TheRealDK 2011-06-15 18:26:01

+0

只要記住,如果你打算忽略時間,你可能需要截斷日期比較中的時間部分。 – 2011-06-15 18:32:03

+0

如何回到兩週...所以而不是上週必須兩週前(http://stackoverflow.com/questions/26021347/how-to-get-two-week-prior-data-from -一張桌子) – SearchForKnowledge 2014-09-24 17:46:20

2

訣竅的日期是創建一個範圍第一與DATEADD和其他任何你需要的,即

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

然後在該範圍內搜索;我通常包括起始和排除結束,因爲這允許

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

有一個範圍是至關重要的,除非值是整個單位(天等),一個簡單的「第10和12之間的數據」 - 否則平等贏得工作得很好。和簡單> =和<使用能夠有效地使用索引等

0

如果它是你正在尋找一個範圍,如任何修飾開始一個星期前,在此之前,結束一個星期,BETWEEN使這挺容易。

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