在MySQL中我正在使用
week(date,3)
获取正确的周分组值。
如何将其转换为PL / SQL?我试过以下但是mysql中的周函数3
怎么样呢?
TRUNC (created_dt, 'IW')
答案 0 :(得分:1)
Oracle正在使用数据库的NLS设置来确定如何计算周数,因此对于MySQL函数的“3”部分没有必要(根据Oracle)。我可以想象一下,选择这个选项仍然有用,但这再一次表明甲骨文并不完全了解在美国境外工作的需要。
答案 1 :(得分:1)
根据您上面的MYSQL规则,它会返回指定日期的周数,例如2012-12-07,3作为第二个参数定义了一周的第三天假定为星期一...
如果你看一下这篇文章,它说MYSQL WEEK()
函数有8种方式可以表现。因此,您需要通过在PL / SQL中查找MYSQL Week等效函数来告诉我们您要实现的结果。
在大多数星际转发方式中,MYSQL WEEK(date[mode])
返回给定日期的周数。
从重新阅读你的问题,我唯一抓住你想要实现PL / SQL中的第一个功能,所以你正在寻找一个等效的功能。
对于Oracle来说,它会略微变成RAMEN ......
W Week of month (1-5)
其中week 1 starts on the first day of the month and ends on the seventh.
它继续了今年的开始。例如。 2012年是星期天开始的, ORACLE THINKS ..............那几周是Sundays to Saturday
。 iw
基于ISO标准的一周中的一周(1-52,1-53)。因此,周并不一定是在周日开始的。WW
一年中的一周(1-53),其中第1周从一年的第一天开始,并持续到一年的第七天。 默认情况下,Oracle NLS设置设置如下:
因此,您可以通过操纵查询级别来建议Oracle遵循日历....
你可以这样:
select trunc('2012-12-07','YY') AS week_number,
to_number(to_char(trunc('2012-12-07','YY')+rownum-1,'D')) AS dayNumber_in_week
from dual connect by level <= 365
where to_char('2012-12-07','IW') = 3
and to_char('2012-12-07','DY') = 'MON';