我的桌子上有一个名为X的字段,我存储了unixtime(php - > time())。 我的问题是:
如何列出我的数据库中的所有月份,例如:6.2009 8.2009等。
我的第二个问题是:
如何根据同一个字段X(我存储unixtime)上的月份和年份列出所有信息的查询,我知道这不起作用,但mabe你可以更好地理解它:where {{ 1}} = '06 .2009'
任何解决方案?
答案 0 :(得分:1)
列出所有月份:
SELECT DISTINCT EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) FROM MyTable;
返回给定年份的所有行&月:
SELECT * FROM MyTable
WHERE EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(X)) = 200906;
答案 1 :(得分:1)
要回答您的第一个问题,您可以使用分组执行此操作:
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;
答案 2 :(得分:1)
试试这个
SELECT FROM_UNIXTIME(X,'%m。%Y')FROM TABLE GROUP BY FROM_UNIXTIME(X,'%m。%Y')
SELECT * FROM TABLE WHERE FROM_UNIXTIME(X,'%m。%Y')='06.2009'
再见