2017-08-08 121 views
0

我有一個名爲Accounts的表,其中有一個名爲TransactionDate的日期列。我需要獲取TransactionDate在月,年之間的所有記錄。MySQL在特定月份,年份之間獲取記錄

例如,所有的記錄,其中TransactionDate是6年,2016年和8之間,2017年

我的查詢字符串看起來像:

SELECT Amount 
    FROM Accounts 
WHERE (MONTH(TransactionDate) BETWEEN 6 and 8) 
    AND (YEAR(TransactionDate) BETWEEN 2016 and 2017) 
ORDER BY TransactionDate ASC 

但是它只是讓我記錄了六月,七月2016年2017年八月它跳過記錄2017年1月,SPET,2016年十一月

我附上的所有記錄TransactionDate欄的截圖(有31人)

enter image description here

這裏是返回結果

enter image description here

有什麼不對我的查詢的截圖?此外,該查詢將是動態的,即用戶將從表單中選擇月份和年份,並將結果返回給他們。

謝謝。

+0

,基於您展示的輸入和輸出您運行查詢正確的查詢 – RiggsFolly

回答

1

您只需通過那些BEFORE 2017-08和AFTER 2016-06

SELECT Amount 
    FROM Accounts 
WHERE TransactionDate > '2016-06-01T00:00:00' 
    AND TransactionDate < '2017-08-01T00:00:00' 
ORDER BY TransactionDate ASC 

什麼地方錯了你當前的查詢是,你得到的數據,其中月份是六月,七月過濾查詢,或8月,以及2016年或2017年的年份。這是不對的,你想根據日期本身過濾,而不是它的組成部分。

0

你似乎想:​​

select a.Amount 
from Accounts a 
where a.TransactionDate >= '2016-06-01' AND 
     a.TransactionDate < '2017-09-01' 
order by a.TransactionDate ASC 
0

我想這你需要什麼

SELECT Amount , ExpenseType , 
     MONTHNAME(TransactionDate) AS TransactionMonthString 
     Year(TransactionDate) AS TransactionYearString 
FROM Accounts 
WHERE TransactionDate >= '2016-06-01' AND TransactionDate <= '2017-08-01' 
ORDER BY TransactionDate 
0
select Amount from Accounts where TransactionDate BETWEEN '2016-04-02' AND '2017-08-03'; 

試試這個,好運氣

相關問題