根据文档,我很难弄清楚如何将周数等同于Perl和MySQL。
如何根据同一时区中的MySQL时间戳在Perl和unix中计算完全相同的周数?
SELECT DATE_FORMAT(from_unixtime(datefield), '%Y%U') FROM table;和
print strftime('%Y%U', localtime($datevar));对于任何给定的时间戳,都应该生成相同的周数字。理想情况下,我希望周数字是可移植的,比如ISO 8601。虽然我的测试中的周数字有时似乎是匹配的,但我在Perl和MySQL的文档中找不到任何东西来确认日期格式明显符合相同的定义。
谢谢!
发布于 2010-09-01 03:35:19
对于Perl,请查看DateTime模块。它提供了一个week()方法,该方法可以返回给定DateTime对象的一年中的星期数:
($week_year, $week_number) = $dt->week;请注意,年份很重要,因为前一年或下一年的日期可以在一周内。这是因为ISO标准中的“星期”,其中一年的第一周是包含一月的第四天。因此,像1月1日这样的日期可能是前一年的最后一周。
对于未受过训练的人来说,MySQL的YEARWEEK()函数可以做同样的事情,或者像Mikey1980 suggests一样,尝试WEEKOFYEAR()函数。正如its documentation所说,看起来YEARWEEK()做了同样的事情:
结果中的年份可能与一年中第一周和最后一周的date参数中的年份不同。
...but我不能保证他们会做同样的事情。:-)
发布于 2010-09-01 01:47:25
对于MySQL,请尝试执行以下查询:
SELECT WEEKOFYEAR(from_unixtime(datefield)) FROM table;很抱歉,这只是你想要的答案的一半,但我希望它能有所帮助!
https://stackoverflow.com/questions/3611563
复制相似问题