oracle round日期函数 天数如何四舍五入 100

oracleround日期函数天数如何四舍五入?以1999.11.2110:31:11为例格式结果------------------------------------... oracle round日期函数 天数如何四舍五入?
以 1999.11.21 10:31:11 为例
格式 结果
---------------------------------------------------------------------------
SS 1999.11.24 10:31:11
MI 1999.11.24 10:31:00
HH 1999.11.24 11:00:00
DD 1999.11.24 00:00:00
MM 1999.12.01 00:00:00
YY 2000.01.01 00:00:00

这个天数 怎么四舍五入到24号的?无法理解。求高手解释。
展开
 我来答
zhishouxin
2011-08-24 · TA获得超过187个赞
知道答主
回答量:75
采纳率:0%
帮助的人:104万
展开全部
首先你的例子数据错了,不是21号,应该是24号。这样就没问题了。
看你列出的数据,应该是格式由小到大,逐步四舍五入的一个过程。
这个算法如下:

round(带小时分秒日期, 格式)

格式是 秒SS,精确到秒。
分MI,到分,秒数30是分界线,相当于四舍五入的5,如果秒超过30,向前进1
时HH,如果分超过30,向前进1
日DD, 如果小时超过12,向前进1
月MM,16号是临界,相当于四舍五入的5,如果超过16号,向前进1
年YY,超过7月,向前进1

对应的语句分别是
select to_date('1999-11-24 10:31:11','yyyy-mm-dd hh24:mi:ss') from dual;
select round(to_date('1999-11-24 10:31:11','yyyy-mm-dd hh24:mi:ss'),'mi') from dual;
select round(to_date('1999-11-24 10:31:11','yyyy-mm-dd hh24:mi:ss'),'hh') from dual;
select round(to_date('1999-11-24 10:31:11','yyyy-mm-dd hh24:mi:ss'),'dd') from dual;
select round(to_date('1999-11-24 10:31:11','yyyy-mm-dd hh24:mi:ss'),'mm') from dual;
select round(to_date('1999-11-24 10:31:11','yyyy-mm-dd hh24:mi:ss'),'yy') from dual;
祝__福
2013-09-04 · TA获得超过1064个赞
知道小有建树答主
回答量:94
采纳率:0%
帮助的人:106万
展开全部
--讲解:年份按**1-6月和7-12月**四舍五入到最近的 几几年1月1日
select round(to_date('6-2月-13'),'year') from dual;
select round(to_date('6-5月-13'),'year') from dual;
select round(to_date('6-7月-13'),'year') from dual;

--讲解:月份按**1-15日和16-30日**四舍五入到最近的 几月1日
select round(to_date('15-2月-13'),'month') from dual;
select round(to_date('16-2月-13'),'month') from dual;

--讲解:天数按**周一-周三和周四到周日**四舍五入到最近的 周日
--去掉注释不然会有错误测试:

select round(to_date('3-2月-13'),'day') from dual;--周日
select round(to_date('4-2月-13'),'day') from dual;--周一
select round(to_date('5-2月-13'),'day') from dual;--周二
select round(to_date('6-2月-13'),'day') from dual;--周三
以上都是2月3日

以下都是2月10日
select round(to_date('7-2月-13'),'day') from dual;--周四
select round(to_date('8-2月-13'),'day') from dual;--周五
select round(to_date('9-2月-13'),'day') from dual;--周六
select round(to_date('10-2月-13'),'day') from dual;--周日
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paul50060049
2017-07-01 · 超过20用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:39.9万
展开全部
CREATE OR REPLACE FUNCTION f_RoundDate(uDate IN Date,FMT VARCHAR2)
/***
  oracle round日期函数 天数如何四舍五入?
  以 1999.11.21 10:31:11 为例 
  格式 结果 
  ---------------------------------------------------------------------------
  SS 1999.11.24 10:31:11
  MI 1999.11.24 10:31:00
  HH 1999.11.24 11:00:00
  DD 1999.11.24 00:00:00
  MM 1999.12.01 00:00:00
  YY 2000.01.01 00:00:00

  SELECT f_RoundDate(TO_DATE('1999.11.21 10:31:11','YYYY-MM-DD HH24:MI:SS'),'SS') FROM DUAL;
***/
RETURN DATE
IS
  uReturn DATE;               -- 返回日期
BEGIN
  uReturn := uDate;

  IF (FMT = 'SS') THEN           -- 秒
    uReturn := uDate;
  ELSIF (FMT = 'MI') THEN        -- 分
    uReturn := Round(uDate,'MI');
  ELSIF (FMT = 'HH') THEN        -- 时
    uReturn := Round(uDate,'HH24');
  ELSIF (FMT = 'DD') THEN        -- 日
    uReturn := Round(uDate,'DAY');
  ELSIF (FMT = 'MM') THEN        -- 月
    uReturn := Round(uDate,'month');
  ELSIF (FMT = 'YY') THEN        -- 年
    uReturn := Round(uDate,'year');
  END IF;
  
  RETURN (uReturn);
END f_RoundDate;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mp...0@sohu.com
2017-07-01 · TA获得超过101个赞
知道小有建树答主
回答量:163
采纳率:60%
帮助的人:32.9万
展开全部
oracle中的round函数是用来将数值四舍五入的。语法:round(number,digits)其中number是要进行四舍五入的数值,digits是保留的小数位数。举例:要将三个人的身高四舍五入保留1位小数,可用如下语句:select id,姓名,round(身高,1) from person;运行结果:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llj318
2011-08-24 · TA获得超过410个赞
知道答主
回答量:186
采纳率:0%
帮助的人:99.6万
展开全部
DD 1999.11.24 00:00:00 你现在是上午的10点多,是应该舍到24号的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式