Oracle10g中的YEARWEEK()?

时间:2011-09-15 09:59:34

标签: oracle10g sql-date-functions to-char

在MySql中,我可以使用YEARWEEK()以一个字符串接收本周和本周的相关年份。 (例如SELECT YEARWEEK('1987-01-01');导致“198653”)。

Oracle10g中有类似内容吗?

我只了解TO_CHAR功能。但如果我使用TO_CHAR(sysdate, 'YYYYIW');我收到198753而不是198653.那么,我怎么能够正确地计算出来?

2 个答案:

答案 0 :(得分:2)

使用IYYYIW格式与TO_CHAR()有什么不同?请注意开头的“ I ”而不是第一个“Y”,它是基于ISO标准的4位数年份。

答案 1 :(得分:0)

我无法重现Oracle返回198753的示例。

select TO_CHAR(DATE '1987-01-01', 'YYYYIW') from dual为我返回198701,根据ISO周定数的定义,这是正确的。

Oracle有另一种格式掩码WW(而不是IW),它使用一年中第一天所在的星期#1 - 这也将返回1月份的第1周第一

看看这里:http://en.wikipedia.org/wiki/Week_number#Week_numbering

我发现MySQL的周数实际上有点奇怪,因为我知道没有周编号方案会在1987年1月1日返回第53周(但这并不意味着很多......)