用于将unix时间戳分解为句点的Mysql查询

时间:2011-04-22 07:28:06

标签: mysql sql

我有一个名为posts的数据库表,其中有3个字段,如:

  • post_id(int,autoincrement,primary)
  • post_text(varchar 200)
  • post_time(int)

我使用以下mysql查询将数据插入上面提到的表中:

INSERT INTO `posts` 
  (`post_id`, `post_text`, `post_time`) 
VALUES 
  (NULL, '324324234', UNIX_TIMESTAMP(NOW()))         

这完全没问题。

现在我正在尝试根据上表中的周数检索数据。说,我想显示每周插入数据库的帖子数量(周一至周日)。我知道我可以通过mysql中的YearWeek函数来完成它,但它无法正常工作。

2 个答案:

答案 0 :(得分:2)

您将日期/时间存储为unix时间戳,因此您需要将其转换为DATETIME才能使用YEARWEEK - 使用:

  SELECT YEARWEEK(FROM_UNIXTIME(p.post_time)),
         COUNT(*) AS numPosts
    FROM POSTS p
GROUP BY YEARWEEK(FROM_UNIXTIME(p.post_time))

DATE_FORMAT可以自定义年/周值。

参考:

答案 1 :(得分:0)

@OMGPonies -

SELECT YEARWEEK(FROM_UNIXTIME(p.post_time)) AS yw,
     COUNT(*) AS numPosts
FROM POSTS p
GROUP BY yw;

会跑得更快(可能 - 肯定不会慢)。