求日期在当月的月次,按自然周计算,即使只有一天也算第一周。 谢谢大家
解决方案 »
- 求一个查询语句
- 如何更新oracle数据库中blob对象的十六进制数值?
- Oracl中的使用utl_file来读取FTP服务器上指定的文件?
- 关于大的影音文件存入Oracle数据库后,上传速度变慢问题
- java 存储过程 file操作权限问题
- *急问*急问*要用pro*c把对数据库的查询,update,都做成dll,现在做成 .pc文件,编译成c后,单独运行没有问题,但是一旦 加入到vc的一个工
- select 排序 取序号
- 憋了好久的问题,求解决方法。
- oracle的存储过程中能否创建临时表,存储过程完毕前drop掉?如果可以,该如何写,不可以怎么解决!
- 请问:oracle里有没有矩阵装置的函数,我需要实现一个交叉报表,也就是行与列的转换
- sqlldr对日期的导入
- Oracle安装的问题
但是
希望结果是这样的比如
现在 8月 1 , 2 号 是第一周 1
3456789 是第二周 2
。。
给你个例子:
SELECT Z,CASE
WHEN TO_NUMBER(TO_CHAR(Z, 'dd')) >
7 - TO_NUMBER(TO_CHAR(TRUNC(Z, 'mm'), 'd')) + 1 THEN
CEIL((TO_NUMBER(TO_CHAR(Z, 'dd')) +
TO_NUMBER(TO_CHAR(TRUNC(Z, 'mm'), 'd')) - 1) / 7)
ELSE
1
END WEEK
FROM (SELECT TRUNC(SYSDATE, 'mm') + ROWNUM - 1 Z
FROM DUAL
CONNECT BY ROWNUM <= 66);
简化一下:
SELECT Z,
CEIL((TO_NUMBER(TO_CHAR(Z, 'dd')) +
TO_NUMBER(TO_CHAR(TRUNC(Z, 'mm'), 'd')) - 1) / 7)
FROM (SELECT TRUNC(SYSDATE, 'mm') + ROWNUM - 1 Z
FROM DUAL
CONNECT BY ROWNUM <= 66);
就是该日在本月的第几个自然周
SQL> SELECT TRUNC(SYSDATE) FROM DUAL;TRUNC(SYSDATE)
--------------
8/27/2008SQL>
SQL> SELECT DECODE(TO_CHAR(TRUNC(SYSDATE, 'MM'), 'D'),
2 1,
3 TO_CHAR(SYSDATE, 'W'),
4 TO_NUMBER(TO_CHAR(SYSDATE, 'W')) + 1) AS "YOUR_WEEKS"
5 FROM DUAL;YOUR_WEEKS
----------------------------------------
5SQL> SELECT TO_DATE('2008-06-10','YYYY-MM-DD') FROM DUAL;TO_DATE('2008-06-10','YYYY-MM-
------------------------------
6/10/2008SQL>
SQL> SELECT DECODE(TO_CHAR(TRUNC(TO_DATE('2008-06-10','YYYY-MM-DD'), 'MM'), 'D'),
2 1,
3 TO_CHAR(TO_DATE('2008-06-10','YYYY-MM-DD'), 'W'),
4 TO_NUMBER(TO_CHAR(TO_DATE('2008-06-10','YYYY-MM-DD'), 'W')) + 1) AS "YOUR_WEEKS"
5 FROM DUAL;YOUR_WEEKS
----------
2SQL>