Oracle周计算问题

2024-04-06

我正在使用 Oracle 的 to_char() 函数将日期转换为周数 (1-53):

select  pat_id, 
    pat_enc_csn_id, 
    contact_date, 
    to_char(contact_date,'ww') week,
    ...

“ww”开关为我提供了今年一月的日期值:

Date        Week
1-Jan-10    1
2-Jan-10    1
3-Jan-10    1
4-Jan-10    1
5-Jan-10    1
6-Jan-10    1
7-Jan-10    1
8-Jan-10    2
9-Jan-10    2
10-Jan-10   2
11-Jan-10   2
12-Jan-10   2

快速查看日历表明这些值应该是:

Date         Week
1-Jan-10    1
2-Jan-10    1
3-Jan-10    2
4-Jan-10    2
5-Jan-10    2
6-Jan-10    2
7-Jan-10    2
8-Jan-10    2
9-Jan-10    2
10-Jan-10    3
11-Jan-10    3
12-Jan-10    3

如果我使用“iw”开关而不是“ww”,结果不太理想:

Date         Week
1-Jan-10    53
2-Jan-10    53
3-Jan-10    53
4-Jan-10    1
5-Jan-10    1
6-Jan-10    1
7-Jan-10    1
8-Jan-10    1
9-Jan-10    1
10-Jan-10   1
11-Jan-10   2
12-Jan-10   2

是否有另一个 Oracle 函数可以按照我的预期计算周数,还是我需要编写自己的函数?

EDIT

我正在尝试匹配 Crystal Reports 使用的逻辑。每个整周从星期日开始;一年的第一周从 1 月 1 日代表的那一天开始(例如,在 2010 年,1 月 1 日是星期五)。


使用 IW 时,Oracle 遵循有关周数的 ISO 8601 标准(请参阅http://en.wikipedia.org/wiki/ISO_8601 http://en.wikipedia.org/wiki/ISO_8601)。这与我们在欧洲通常使用的标准相同。

Oracle论坛上也提到了你的问题:http://forums.oracle.com/forums/thread.jspa?threadID=947291 http://forums.oracle.com/forums/thread.jspa?threadID=947291 and http://forums.oracle.com/forums/message.jspa?messageID=3318715#3318715 http://forums.oracle.com/forums/message.jspa?messageID=3318715#3318715。也许你可以在那里找到解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle周计算问题 的相关文章

随机推荐