Posts Tagged ‘pgsql’

有个数据库(基于PostgreSQL)的表是按年+第几周分期建的,计划任务是提前一周建立未来两周的表。今天发现在200952后出现的表名是201053,而正确的表名应该是200953(2009第53周)。 在PHP date手册中有这样的描述: ISO-8601 year number. This has the same value as Y, except that if the ISO week number (W) belongs to the previous or next year, that year is used instead. (added in PHP 5.1.0) 参考:http://php.net/manual/en/function.date.php 取某个日期是年的第几周有几种实现,在PHP中我用date(‘oW’),这样结果正确的。但是在PostgreSQL中(有少量的function实例)我错用了参数year,查了手册才知道有个isoyear参数用来替代year。 在ISO8601标准里,以1月4日所在的那个星期为当年的第一个星期。也就是说:最晚会到一年的一月3号,这一天算做上一年的最后一周(第53周)内;其余情况下,一月年份里加上前一年剩余部分算做当年第一周,这也是为什么有的年份有52周,有的有53周。 如:2006-01-01是05年52周;2007-12-31是08年第1周; SELECT ‘_’ || EXTRACT(isoyear FROM ’2010-01-03′::date) || TO_CHAR(EXTRACT(week FROM ’2010-01-03′::date),’FM09′) — 结果为 “_200953″ SELECT […]