当前位置: 首页 > 面试题库 >

Oracle周计算问题

卞博简
2023-03-14
问题内容

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

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

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

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函数可以像我期望的那样计算周数,或者我需要编写自己的函数?

编辑

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


问题答案:

基于此问题,我如何计算给定日期的星期数?,我编写了以下Oracle逻辑:

CASE
  --if [date field]'s day-of-week (e.g. Monday) is earlier than 1/1/YYYY's day-of-week
  WHEN to_char(to_date('01/01/' || to_char([date field],'YYYY'),'mm/dd/yyyy'), 'D') - to_char([date field], 'D') > 1 THEN
    --adjust the week
    trunc(to_char([date field], 'DDD') / 7) + 1 + 1 --'+ 1 + 1' used for clarity
  ELSE trunc(to_char([date field], 'DDD') / 7) + 1
END calendar_week


 类似资料:
  • 问题内容: 我用SimpleDateFormat得到一些令人费解的结果,并希望有人可以阐明这个问题。输出: 我是否应该将一年的最后一个“周”视为特例?还是这是正确的解释方式?显然,当尝试顺序组织一周时,顺序是不正确的。调整初始值后,2005年12月25日被视为第53周。我还没有看过Joda,看看Joda是否产生类似的结果。 相关代码: 背景:我在JasperReports中使用交叉表(分组为星期的

  • 这是我的代码: 由于某种原因,与可接受值相比,这段代码只产生了小数15位的pi值。我试图通过增加精度值来解决这一点;这增加了位数,但只有前15个仍然是准确的。我试着改变它计算算法的方式,它也不起作用。所以我的问题是,是否可以对这段代码做些什么来使它更加精确,或者我必须使用另一种算法?我将非常感谢对此的帮助,因为我不知道如何在Python中使用这么多的数字进行操作。我希望能够控制程序确定和显示的(正

  • 我在配置中错过了什么? “无限”复选框需要勾选还是不勾选?

  • 问题内容: 我如何知道JavaScript的周数和年份来计算日期?对于第20周和2013年以获得5/16/2013,我正在尝试这样做: 问题答案: function getDateOfWeek(w, y) { var d = (1 + (w - 1) * 7); // 1st of January + 7 days for each week 这使用简单的周定义,即2013年的第20周是5月14日

  • 问题内容: 我想获得任何一年中的周数。即使被接受为全球通用的答案,对于日历,而实际上有几个星期。 有什么方法可以计算出来,或者有什么函数可以帮助我? 问题答案: 根据维基百科关于ISO周日期格式的文章,您可以使用以下代码进行计算。 更新: 似乎来自@Samuel的答案更好,并且没有Luca提到的错误 快速一线:

  • 问题内容: 给定一个星期数,例如,您如何计算从星期一开始的那一周中的天数? 第40周的rfc-3339输出示例: 问题答案: PHP 下面的帖子是因为我是个白痴,没有正确阅读问题,但是会获得从星期一开始的一周中的日期,给出的是日期,而不是星期数。 在PHP中 ,改编自PHP日期手册页上的这篇文章 来自的输出: