我的桌子上有一個名爲X的字段,我存儲了unixtime(php - > time())。 我的問題是:Unixtime&mysql
如何列出所有月份從我的DB,是這樣的:6. 2009 8. 2009等。
我的第二個問題是:
哪有我做了一個查詢,列出所有的信息基於一個月和一年在同一領域X(我存儲unixtime),我知道這是行不通的,但瑪比,你可以更好地理解它:其中
date
= '06 .2009'
任何解決方案?
我的桌子上有一個名爲X的字段,我存儲了unixtime(php - > time())。 我的問題是:Unixtime&mysql
如何列出所有月份從我的DB,是這樣的:6. 2009 8. 2009等。
我的第二個問題是:
哪有我做了一個查詢,列出所有的信息基於一個月和一年在同一領域X(我存儲unixtime),我知道這是行不通的,但瑪比,你可以更好地理解它:其中
date
= '06 .2009'
任何解決方案?
列出所有月份:
SELECT * FROM MyTable
WHERE EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) = 200906;
要回答你的第一個問題,你會跟這樣做:
SELECT DISTINCT EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) FROM MyTable;
返回給定的一年&月份的所有行分組:
SELECT FROM_UNIXTIME(timestamp_column, '%c.%Y') AS month, some_other_column FROM table_name GROUP BY month;
至於你的第二個問題,這取決於你想要做什麼。例如:
SELECT AVG(payment), SUM(*), FROM_UNIXTIME(timestamp_column, '%c.%Y') AS month, some_other_column FROM table_name WHERE timestamp_column BETWEEN UNIX_TIMESTAMP(200906) AND UNIX_TIMESTAMP(200907) - 1 GROUP BY month;
會返回付款的平均值和每組的行數(總和)。
要從具體的時間表得到不分組信息,降低了查詢,像這樣:
SELECT payment, some_other_column FROM table_name WHERE timestamp_column BETWEEN UNIX_TIMESTAMP(200906) AND UNIX_TIMESTAMP(200907) - 1;
試試這個
SELECT FROM_UNIXTIME(X, '%M%Y')FROM表GROUP BY FROM_UNIXTIME(X, '%米。%Y')
SELECT * FROM TABLE WHERE FROM_UNIXTIME(X, '%米。%Y')= '06.2009'
再見
第二個查詢中的WHERE子句是否需要全表掃描? – 2009-08-20 00:50:22
是的,我相信。您應該使用EXPLAIN來分析查詢,以確定MySQL的優化器如何處理它。 – 2009-08-20 00:59:32