Oracle如何获取某年每月第N周星期X的所有日期

要求:列出2012年每月第二周星期二的日期

两种理解:

www.2cto.com

1.认为每周第一天为星期一(中国习惯),且需求为第二周周二(非第二个周二)

[sql]

--基本原理为用下周日之日期,利用decode判断是上推5日还是下推2日

[sql]

select next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),1)

+decode(next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),1),add_months(trunc(sysdate,'yyyy'),rownum-1)+7,-5,2)

from dual connect by rownum<13;

output:

2012.01.03 00:00:00

2012.02.07 00:00:00

2012.03.06 00:00:00

2012.04.03 00:00:00

2012.05.08 00:00:00

2012.06.05 00:00:00

2012.07.03 00:00:00

2012.08.07 00:00:00

2012.09.04 00:00:00

2012.10.09 00:00:00

2012.11.06 00:00:00

2012.12.04 00:00:00

2013.01.08 00:00:00

www.2cto.com

2.认为每周第一天为星期日(外国习惯),且需求为第二周周二(非第二个周二)

[sql]

--基本原理为用下周六之日期,利用decode判断是上推4日还是下推3日

select next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),7)

+decode(next_day(add_months(trunc(sysdate,'yyyy'),rownum-1),7),add_months(trunc(sysdate,'yyyy'),rownum-1)+7,-4,3)

from dual connect by rownum<13;

output:

2012.01.10 00:00:00

2012.02.07 00:00:00

2012.03.06 00:00:00

2012.04.10 00:00:00

2012.05.08 00:00:00

2012.06.05 00:00:00

2012.07.10 00:00:00

2012.08.07 00:00:00

2012.09.04 00:00:00

2012.10.09 00:00:00

2012.11.06 00:00:00

2012.12.04 00:00:00

2013.01.08 00:00:00

www.2cto.com

3.认为每周第一天为星期日(外国习惯),且需求为每月第二个星期二

[sql]

--基本原理为先构造全年之日期,再利用to_char函数

--to_char(c1,'w') = 2 表每月第二周

--to_char(c1,'d') = 3 表周二,值为1表周日

select c1

from

(

select to_date(2012||'-01-01','yyyy-mm-dd')+level c1

from dual

connect by level < 366

)

where to_char(c1,'w') = 2 and  to_char(c1,'d') = 3;

output:

2012.01.10 00:00:00

2012.02.14 00:00:00

2012.03.13 00:00:00

2012.04.10 00:00:00

2012.05.08 00:00:00

2012.06.12 00:00:00

2012.07.10 00:00:00

2012.08.14 00:00:00

2012.09.11 00:00:00

2012.10.09 00:00:00

2012.11.13 00:00:00

2012.12.11 00:00:00

总结:

不同理解可以得出不同结果,最好能请客户提供结果,以利判断。

附:

用于 date/time 转换的模板

模板 描述

HH 一天的小时数 (01-12)

HH12 一天的小时数 (01-12)

HH24 一天的小时数 (00-23)

MI 分钟 (00-59)

SS 秒 (00-59)

SSSS 午夜后的秒 (0-86399)

AM or A.M. or PM or P.M. 正午标识(大写)

am or a.m. or pm or p.m. 正午标识(小写)

Y,YYY 带逗号的年(4 和更多位)

YYYY 年(4和更多位)  www.2cto.com

YYY 年的后三位

YY 年的后两位

Y 年的最后一位

BC or B.C. or AD or A.D. 年标识(大写)

bc or b.c. or ad or a.d. 年标识(小写)

MONTH 全长大写月份名(9字符)

Month 全长混合大小写月份名(9字符)

month 全长小写月份名(9字符)

MON 大写缩写月份名(3字符)

Mon 缩写混合大小写月份名(3字符)

mon 小写缩写月份名(3字符)

MM 月份 (01-12)

DAY 全长大写日期名(9字符)

Day 全长混合大小写日期名(9字符)

day 全长小写日期名(9字符)

DY 缩写大写日期名(3字符)

Dy 缩写混合大小写日期名(3字符)

dy 缩写小写日期名(3字符)

DDD 一年里的日子(001-366)

DD 一个月里的日子(01-31)

D 一周里的日子(1-7;SUN=1)

W 一个月里的周数

WW 一年里的周数

CC 世纪(2 位)

J Julian 日期(自公元前4712年1月1日来的日期)

Q 季度

RM 罗马数字的月份(I-XII;I=JAN)-大写

rm 罗马数字的月份(I-XII;I=JAN)-小写

oracle中怎样获取一周的日期,Oracle如何获取某年每月第N周星期X的所有日期相关推荐

  1. oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园

    oracle中exp和imp是什么,oracle中exp和imp有何区别.exp和imp的输入都是名字和值对:exp parameter_name=value 或exp parameter_name= ...

  2. java 根据某个日期查询出是某年的第几周

    文章目录 前言 一.java根据某个日期查询出是某年的第几周 前言 做记录用: 一.java根据某个日期查询出是某年的第几周 public class WeekByDate {public stati ...

  3. oracle中常见ck和fk是什么,Oracle常用知识总结

    1.曾经不小心把开发库的数据库表全部删除,当时吓的要死.结果找到下面的语句恢复到了1个小时之前的数据!很简单. 注意使用管理员登录系统: select * from 表名 as of timestam ...

  4. oracle中如何创建一个过程,如何开发ORACLE存储过程

    一. 概述 Oracle存储过程开发的要点是: • 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程; • 在Oracle数据库中创建一个存储过程; • 在Oracle ...

  5. oracle中存储过程和函数有什么区别,Oracle中存储过程和函数的区别

    Oracle中存储过程和函数的区别 存储过程和函数:  www.2cto.com 例子: [sql] //创建过程 create or replace procedure add_emailinfo( ...

  6. oracle中overwrite写法,【学习笔记】Oracle 11G新特性restart的深入研究案例

    [学习笔记]Oracle 11G新特性restart的深入研究案例 时间:2016-11-26 22:35   来源:Oracle研究中心   作者:网络   点击: 次 天萃荷净 Oracle研究中 ...

  7. oracle中in函数在子查询使用,Oracle In

    oracle函数 的 Oracle In 在本教程中,您将学习如何使用Oracle IN运算符来确定值是否与列表或子查询中的任何值相匹配. Oracle IN操作符介绍 Oracle IN运算符确定值 ...

  8. Oracle中随机抽取N条记录,使用Oracle分析函数随机抽取N条记录

    模拟一个歌曲表,有歌曲ID和作者ID,并且初始化一些数据 create table music( music_id int primary key, userid int ); 模拟一个歌曲表,有歌曲 ...

  9. Oracle中动态拼接参数怎么传,急oracle 动态游标传日期参数是如何传的呢,请赐教,多谢...

    当前位置:我的异常网» Oracle开发 » 急oracle 动态游标传日期参数是如何传的呢,请赐教 急oracle 动态游标传日期参数是如何传的呢,请赐教,多谢 www.myexceptions.n ...

最新文章

  1. 生物信息学、系统生物学 期刊 会议
  2. android h5输入框被键盘遮挡,APP调用H5开发页面,输入框被软键盘遮挡问题的解决方案...
  3. oracle0级备份和全备份实录_蓝光硬盘备份管理系统在档案系统的应用
  4. boost::callable_traits添加member右值引用的测试程序
  5. 1337:【例3-2】单词查找树
  6. mvc动态添加html控件,jquery – MVC3 Html.DisplayFor – 可以让这个控件生成一个ID吗?...
  7. MySQL 语句优化 ICP
  8. 招商:笔试题(数组统计重复次数,面包累计问题)
  9. Markdown编辑器MWeb如何建立静态网站/博客
  10. mysql的索引(一)
  11. PRAE插件开发遇到的一个坑
  12. MySQL数据库学习资料(一)
  13. com.mysql.jdbc.Connection.isValid(I)Z错误解决办法
  14. 导航recovery机制
  15. 心灵捕手——走进内心世界
  16. 从零到一制作个人网站
  17. 【桶哥的问题——吃桶-简化版】【洛谷p2671】求和
  18. python基础语法和变量
  19. linux 时间怎么求差值_linux批量计算时间差脚本——awk
  20. 洛克菲勒:世界上只有两种人头脑聪明...

热门文章

  1. 如何在Word中给公式自动编号(LaTeX生成mathtype公式,公式居中,编号右对齐)
  2. File之图片添加水印文字
  3. 计算机组成原理-微程序和微指令
  4. 渝粤题库 陕西师范大学《学前儿童音乐教育》作业
  5. 瑞萨RA系列mcu学习笔记--RTT-pwm驱动
  6. 『津津乐道播客』#073. 洗碗机真的好用么?
  7. 虚拟机和容器有什么不同
  8. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.7 如何连接信号槽
  9. 使用maven管理Java项目依赖
  10. 机器人中的数值优化(三)—— 无约束最优化方法基础、线搜索准则