2014-01-10 98 views
0

我有麻煩人物查詢了..MySQL查詢選擇其中min日期和月份

我試圖讓從憑證表的總價值。

月份總是以unix時間格式更改(上個月或下個月)。

PHP

$date = date('Y-m-d', $unixtime); 
$month = date('m', $unixtime); 
$year = date('Y', $unixtime); 

數據庫 'user_voucher_history':

history_id | user_id | value | used | datetime(unixtime) 

the smallest date record was 2013-05-05! 

當前查詢

SELECT 
     IFNULL(SUM(value), 0) AS total 
    FROM user_voucher_history 
    WHERE user_id = 2 AND used = 1 AND MONTH(FROM_UNIXTIME(datetime)) < {$month} 

的上面的代碼:當它涉及到2014年01月返回0,所以嘗試了不同的代碼下面,仍然0

查詢

SELECT 
    IFNULL(SUM(value), 0) AS total 
FROM 
    user_voucher_history, 
    (SELECT MIN(DATE(FROM_UNIXTIME(datetime))) FROM user_voucher_history) AS min_date 
WHERE 
    user_id = 2 AND used = 1 
    AND (DATE(FROM_UNIXTIME(datetime)) BETWEEN min_date AND {$date}) 
    AND (MONTH(FROM_UNIXTIME(datetime)) < {$month}) 
    AND (YEAR(FROM_UNIXTIME(datetime)) < {$year}) 

請建議!

+0

對不起,我不明白你的問題。我會嘗試再次閱讀,但同時我可以告訴你,你真的想把你的日期時間列作爲[DATETIME](http://dev.mysql.com/doc/refman/5.0/en/datetime.html )類型。 –

回答

1

據我瞭解,你想顯示匹配選擇YEARMONTH

確認當期的行試試這個

SELECT 
    IFNULL(SUM(value), 0) AS total 
    FROM user_voucher_history 
    WHERE user_id = 2 AND used = 1 AND 
    MONTH(FROM_UNIXTIME(datetime)) < {$month} AND 
    YEAR(FROM_UNIXTIME(datetime)) = {$year} 
+0

與選定的年份和月份不符,但低於或低於該年份和月份 – tonoslfx

+0

低於或低於?你的意思是少一點還是相等?我改變了查詢 –

+0

,如果月份是12,那麼比月份11,10,09,等 – tonoslfx

0

我想你想個月聚集了過來:

SELECT SUM(value) 
    FROM user_voucher_history 
    WHERE FROM_UNIXTIME(datetime) BETWEEN :mindate AND :maxdate 
    GROUP BY MONTH(FROM_UNIXTIME(datetime)) 

順便說一句,你真的想要將datetime的類型更改爲日期類型,如DATETIME

相關問題