Mysql Query для разбивки метки времени Unix на периоды - PullRequest
1 голос
/ 22 апреля 2011

У меня есть таблица базы данных с именем 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()))         

Это прекрасно работает.

Теперь я пытаюсь получить данные, основанные на неделях, из приведенной выше таблицы. Скажем, я хочу отображать количество постов, вставленных в базу данных каждую неделю (пн - вс). Я знаю, что могу сделать это с помощью функции YearWeek в MySQL, но она не работает должным образом.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2011

Вы сохранили дату / время как метку времени 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 предоставит возможность настроить год /значение недели.

Ссылка:

0 голосов
/ 22 апреля 2011

@ OMGPonies -

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

будет работать быстрее (вероятно, не медленнее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...