Unixtime& MySQL的

时间:2009-08-20 00:36:16

标签: php mysql unix-timestamp

我的桌子上有一个名为X的字段,我存储了unixtime(php - > time())。 我的问题是:

  

如何列出我的数据库中的所有月份,例如:6.2009 8.2009等。

我的第二个问题是:

  

如何根据同一个字段X(我存储unixtime)上的月份和年份列出所有信息的查询,我知道这不起作用,但mabe你可以更好地理解它:where {{ 1}} = '06 .2009'

任何解决方案?

3 个答案:

答案 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)

试试这个

  1. SELECT FROM_UNIXTIME(X,'%m。%Y')FROM TABLE GROUP BY FROM_UNIXTIME(X,'%m。%Y')

  2. SELECT * FROM TABLE WHERE FROM_UNIXTIME(X,'%m。%Y')='06.2009'

  3. 再见