2010-05-27 91 views
2

嗨如何獲取當前周的數據?SQL本週選擇數據

從交易

選擇*,其中transactionDate ....

+1

您正在使用哪種RDBMS? (它可能會提供這方面的特殊功能。) – 2010-05-27 05:43:11

+0

嗨,我正在使用微軟訪問 – user236501 2010-05-27 05:53:05

+0

@ newbie123:這裏的教訓是確保在詢問SQL問題時指定數據庫。由於您沒有指定數據庫,因此大部分答案都不適用於您的問題。 – 2010-05-27 18:02:34

回答

7

在SQL Server基礎上的星期。請參閱DATEPART爲@@ DATEFIRST等。例如,這是在美國/英國settigs自上週日以來所有行業:

WHERE DATEPART(week, transactionDate) = DATEPART(week, GETDATE()) 

編輯:

獲取,使用這個DatePart並使用 「WW」爲你想要的日期的一部分。 在回答評論時,「周」不是一個變量;它的日期有點想要

所以:

WHERE DatePart("ww", transactionDate) = DatePart("ww", GETDATE()) 
+0

我正在使用微軟訪問,如果使用getdate()出錯了 – user236501 2010-05-27 05:53:27

+0

DATEPART(week,transactionDate)週末變量我應該輸入什麼? – user236501 2010-05-27 05:58:47

+1

我認爲這個答案必須來自添加ms-access標籤之前,因爲它的很大一部分不再相關。 – Fionnuala 2010-05-27 07:46:26

0

簡單而輕便:

SELECT * 
    FROM Transaction 
    WHERE transactionDate >= ? 
     AND transactionDate <= ? 

在你的服務器端代碼中的兩個參數計算爲「周」的任何定義你需要。

0

在IBM DB2

SELECT * 
FROM Transaction 
WHERE transactionDate BETWEEN CURRENT TIMESTAMP - 7 days AND CURRENT TIMESTAMP; 
0

mySQL的(標準日期戳)

SELECT * 
FROM Transaction 
WHERE WEEK(NOW())=WEEK(transactionDate); 

mySQL的(UNIX時間戳標記)一個未優化的查詢

SELECT * 
FROM Transaction 
WHERE WEEK(NOW())=WEEK(FROM_UNIXTIME(transactionDate)); 

位。可能是更有效的方法。

注意:這不是滾動7天。只是一年的本週。

編輯:對不起,我沒有看到MS訪問標記。忽略所有這些:|

+0

如果使用訪問? – user236501 2010-05-27 06:04:32

+1

像@gbn說: WHERE DATEPART( 「WW」,transactionDate)= DATEPART( 「WW」,GETDATE()) 周應以 「WW」 – User123342234 2010-05-27 06:32:50

1

在Microsoft Access

ñ天:

SELECT * 
FROM Transaction 
WHERE transactionDate >=Date()-7 

如果你有指標,這種類型的差異套裝,這將是更快,因爲它是sargable

這一週周差:

SELECT * 
FROM Transaction 
WHERE DateDiff("w",[transactionDate],Date())=0 

BTW它被認爲是不好的做法,使用*

則DateDiff:http://office.microsoft.com/en-us/access/ha012288111033.aspx

+1

1用於引入我的術語替換 「可優化搜索」 ,儘管我不確定比只說「可以使用索引」更好。 – 2010-05-27 18:01:04

0

在Access中,如果你想運行一個查詢,發現倒在本週記錄,使用

​​

那週日到週六。如果您想要工作周,可以使用+2和+6。

+0

取決於你如何定義「本週」,你不覺得嗎?你的意思是過去7天嗎?包括今天或今天之前?或者,今天的星期一在星期一開始?還是星期天? – 2010-05-27 18:00:16