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号的?无法理解。求高手解释。 展开
以 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号的?无法理解。求高手解释。 展开
8个回答
展开全部
首先你的例子数据错了,不是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;
看你列出的数据,应该是格式由小到大,逐步四舍五入的一个过程。
这个算法如下:
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;
展开全部
--讲解:年份按**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;--周日
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;--周日
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle中的round函数是用来将数值四舍五入的。语法:round(number,digits)其中number是要进行四舍五入的数值,digits是保留的小数位数。举例:要将三个人的身高四舍五入保留1位小数,可用如下语句:select id,姓名,round(身高,1) from person;运行结果:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DD 1999.11.24 00:00:00 你现在是上午的10点多,是应该舍到24号的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询