Форматы даты на недели - PullRequest
       11

Форматы даты на недели

6 голосов
/ 31 августа 2010

На основании документации я испытываю трудные времена, чтобы выяснить, как приравнять номера недель между Perl и MySQL.

Как бы я рассчитал один и тот же точный номер недели в Perl и MySQL на основе метки времени Unix в одном часовом поясе?

SELECT DATE_FORMAT(from_unixtime(datefield), '%Y%U') FROM table;

и

print strftime('%Y%U', localtime($datevar));

должен выдавать идентичные номера недели для любой заданной отметки времени. В идеале я хотел бы, чтобы номер недели был переносимым, например ISO 8601 . Хотя номера недель в моем тестировании иногда совпадают, я не могу найти в документации ничего для Perl и MySQL, подтверждающего, что форматирование даты четко соответствует одному и тому же определению.

Спасибо!

Ответы [ 2 ]

4 голосов
/ 31 августа 2010

Для Perl загляните в модуль DateTime .Он предоставляет метод week(), который может возвращать номер недели года для данного объекта DateTime:

($week_year, $week_number) = $dt->week;

Обратите внимание, что год имеет значение, поскольку дата может быть неделей дляпредыдущий или следующий год.Это связано со стандартом ISO «неделя», где первая неделя года - это та, которая содержит четвертый день января.Таким образом, такая дата, как 1 января, может быть на последней неделе предыдущего года.

На первый взгляд, похоже, что функция MySQL YEARWEEK() может делать то же самое, или Mikey1980 предлагает , попробуйте функцию WEEKOFYEAR().Похоже, что YEARWEEK() делает то же самое, что и в его документации говорится:

Год в результате может отличаться от года в аргументе даты для первого ипоследняя неделя года.

... но я не могу гарантировать, что они делают то же самое.: -)

2 голосов
/ 31 августа 2010

Для MySQL попробуйте этот запрос:

SELECT WEEKOFYEAR(from_unixtime(datefield)) FROM table;

Извините, это всего лишь половина ответа, который вы ищете, но я надеюсь, что это поможет!

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