如题
解决方案 »
- 游标循环更新问题
- 全文索引ctx_report.query_log_summary 运行错误
- ORCALE 10G 数据导入11G
- oracle 10g 客户端 进入问题
- 游标问题!
- 哪位大侠有系统视图v$系列得详细资料,跪求一份可以吗
- 帮我看下游标与存储过程实现这个功能.貌似游标下无法实现
- ***************----请问这个快照怎么不可以更新数据源表-------------******************
- 数据库联接
- Oracle数据库之间同步问题
- 菜鸟求教MSDAORA的数据库连接Connection问题,连接不上,在线等,散分
- 大家请帮帮我,我安装Oracle 10g时候遇到好多问题.
+ 15
- TO_NUMBER (TO_CHAR (TO_DATE ('20080501', 'yyyymmdd'), 'd'))
FROM DUAL
SELECT TO_DATE ('20080501', 'yyyymmdd')
+ DECODE (TO_CHAR (TO_DATE ('20080501', 'yyyymmdd'), 'd'), 1, 8, 15)
- TO_NUMBER (TO_CHAR (TO_DATE ('20080501', 'yyyymmdd'), 'd'))
FROM DUAL
你只要把20080501换成任何一年的5.1就可以算出该年的母亲节
还应该完善的
我先改哈,再不楼上帮忙
刚才发的没有出来,重发哈.
上面的代码有问题的,等会改下再发^_^
呵呵你这个用法我倒是第一次看到,学习学习,我要去研究下round的用法了
select round(to_date('2007-05-01','yyyy-mm-dd'),'day')+7 from dual
出来是5.6用我的算法是5.13
clear screen;
/*alter session set nls_date_language='American';
commit;
-------------------------关于日期的四舍五入函数round的使用------------------
--函数原型round(date,fmt),date为要处理的日期,fmt指要处理的日期部分--1.
--当fmt为YEAR的时候表示对年四舍五入,月日归为元旦那天 ,以6月30日为界
select round(sysdate,'year') from dual;
--date=2008-6-30 结果=2008-01-01
select round(to_date('30-JUN-2008'),'year') from dual;
--date=2008-7-1 结果=2009-01-01
select round(to_date('03-JUL-2008'),'year') from dual;--2.当fmt为MONTH的时候表示对月四舍五入,年不变,日归到运算后的月的第一天,以每月的中间(15号)为界
-- 结果要么为本月1号,要么为下月1号。
select round(sysdate,'month') from dual;
--date中的日期为1号到15号,结果为本月1号
select round(to_date('01-SEP-2008'),'month') from dual;
select round(to_date('15-SEP-2008'),'month') from dual;
--date中的日期为16号到30号,结果为下个月1号
select round(to_date('16-SEP-2008'),'month') from dual;
select round(to_date('30-SEP-2008'),'month') from dual;--3.当fmt为DD的时候表示对日四舍五入,年月都不变,以每天的中午12点为界
--date中的时间晚于中午12点的时候结果为当天的年月日,data中的时间大于中午12点的时候结果为第二天的年月日
select round(to_date('04-SEP-2008')+11/24,'dd') from dual;--小于12点
select round(to_date('04-SEP-2008')+12/24,'dd') from dual; --to_date('04-SEP-2008')+12/24的结果为2008-09-04-12:00:00
select round(to_date('04-SEP-2008')+13/24,'dd') from dual;--大于12点*/--3.当fmt为DAY的时候表示对星期进行四舍五入,年不变,以星期三的中午12点为界,
-- 结果要么为前一个星期日时候的日期,要么为当前星期的星期日的日期
--下面以2008年9月3号(星期三)为例进行说明,上个星期日为2008-08-31,下个星期日为2008-09-07
--观察下面的运行结果
select round(to_date('03-SEP-2008'),'day') from dual;--2008-09-03-00:00:00
select round(to_date('03-SEP-2008')+11/24,'day') from dual;--小于12点
select round(to_date('03-SEP-2008')+12/24,'day') from dual;--等于2008-09-03-12:00:00点
select round(to_date('03-SEP-2008')+13/24,'day') from dual;--大于12点-------------------------关于日期的截取函数trunc的使用------------------
select trunc(sysdate) from dual;
select trunc(sysdate,'year') from dual;
select trunc(sysdate,'month') from dual;
select trunc(sysdate,'dd') from dual;
select trunc(sysdate,'day') from dual;
select trunc(to_date('2008-05-01','yyyy-mm-dd'),'day')+14 from dual;
上个厕所上来突然想起来还有个trunc函数,建议大家想不通问题的时候去上课WC,保不准上来就想到解决办法了
'1', TRUNC (TO_DATE ('2008-05-01', 'yyyy-mm-dd'), 'day') + 7,
TRUNC (TO_DATE ('2008-05-01', 'yyyy-mm-dd'), 'day') + 14
)
FROM DUAL; 把你的改一下,这样就对了
怎么和 ‘1’ 进行比较呢?????
为什么要和 ‘1’ 进行比较