
正文
oracle在两个日期之间数据 oracle两个日期之间相隔天数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
oracle中计算两个日期之间的间隔天数
你可以使用一个隐藏的功能DATEDIF(日期,时间2,“D”);
以下是详细介绍:
1,简要说明:返回两个日期之间的\月年\的间隔天数
2,基本语法:= DATEDIF(开始日期,结束日期,单位代码)
3,实例1:
主题:出生日期1973年4月1日计算人的年龄
公式:= DATEDIF(“1973年4月1日”,TODAY(),“Y”)
结果: 33
当本机代码“Y”,计算是多年来两个日期
之间的数
4,实例2的简要说明:。
标题:计算的月数1973年4月1日的日期间隔和当前日期
公式:。 = DATEDIF(“1973年4月1日”,TODAY(),“M”)
结果:403
的简要说明当单位代码为“M”时,计算月2日
5之间的数。例子3:
主题:计算日期和当前日期1973年4月1日
公式之间的天数。 = DATEDIF(“1973年4月1日”,TODAY(),“D”)
结果:12273
的简要说明当单位代码“D”的时候,结果是两个日期
之间的天数。
5,实例4:
主题:计算日期,不包括年数和天数的当前日期1973年4月1日
公式:。 = DATEDIF(“1973 - 4-1”,TODAY(),“YD”)
结果:220
的简要说明当单位代码为“YD”时,计算结果是两个天数日期间隔忽视的年差数
5,实例5:。
主题:= DATEDIF(“1973-4:不考虑天的1973年4月1日和当前日期
公式之间数字的年份和月份之日起计算-1“,TODAY(),”MD“)
结果:6
的简要说明时当单位代码”MD“,结果是天数两个日期的年差数之间忽略了一个月
5,实例6:。
主题:计算1973-4间隔1日期和当前日期的月数,不包括一年
公式:。 = DATEDIF(“1973年4月1日”,TODAY(),“YM”)
结果:7
的简要说明当单位代码为“YM”时,计算两个日期不计的年差数之间的月数。
相关问答
Q1: 如何掌握Oracle中的时间间隔型数据
在 i 版本以前 Oracle 没有内置的方式来记录时间的流逝 DATE型数据用来记录单独的时间点 但是要表达一个时间量(也就是一个间隔) 数据库的设计者就必须把时间间隔转换成原始单位秒 然后用一个NUMBER列来保存它
虽然NUMBER这个数据类型可以以秒为单位准确地表示时间 但是它使得时间的计算变得很困难 比如 秒是 分钟 分钟是 个小时 个小时等于 天——这些数字在以十进制为基础的数字系统中都是非常蹩脚的
在Oracle i中 按照SQL 标准 增加了时间间隔型数据INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND 它们和其他几种数据类型一起使得对时间的处理更加准确 TIMESTAMP TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE等数据类型都把时间的表达精确到了若干分之一秒 而且后面两种还解决了地理位置造成的时间变化
在SQL和PL/SQL中 你都可以用时间间隔型数据 它们都是用同一种方式规定的
INTERVAL YEAR[(year_precision)] TO MONTH
INTERVAL DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]
对于精确数值 规定有缺省值 年和日是两位数 若干分之一秒是六位数
时间间隔的大小由INTERVAL来表示 后面紧接一个放在单引号中的表达式 以及用来解释该表达式的文字 用YEAR TO MONTH表示时间间隔大小时要在年和月之间用一个连字符( ) 连接 而DAY TO SECOND表示时间间隔大小时要在日和时间之间用一个空格连接 举个例子来说 下面是 年 个月的时间间隔的表示方法
INTERVAL YEAR TO MONTH
下面的例子表示 天 个小时 分钟 秒
INTERVAL DAY TO SECOND( )
时间间隔可以为正 也可以为负 它们可以从各种TIMESTAMP数据类型中加上或者减去 从而得到一个新的TIMESTAMP数据类型 它们之间也可以做加减运算得到新的时间间隔
列表A说明了怎样创建一个表格来记录一个事件的开始时间和持续时间 如实验等 数据被收集以后 SQL中内置的摘要函数不需要与原始单位秒进行相互转换 就可以报告总的持续时间和平均持续时间
列表A
CREATE TABLE experiment
(experiment_id NUMBER( )
experiment_desc VARCHAR ( )
experiment_start TIMESTAMP
experiment_duration INTERVAL DAY( ) TO SECOND( )
)
Table created
INSERT INTO experiment
VALUES (
Busted urban myth JUN PM
INTERVAL DAY( ) TO SECOND( )
)
row created
col experiment_desc format a
col experiment_start format a
col experiment_duration format a
SELECT * FROM experiment
EXPERIMENT_ID EXPERIMENT_DESC —— —— EXPERIMENT_START EXPERIMENT_DURATION —— —— Busted urban myth JUN PM +
—— Now pute the experiment s ending time
SELECT experiment_id experiment_start
experiment_start + experiment_durationexperiment_end
FROM experiment
EXPERIMENT_ID EXPERIMENT_START —— —— EXPERIMENT_END —— JUN PM JUN PM
但遗憾的是 TO_CHAR函数中没有包括任何能够映射到各个时间间隔数据类型片段的格式模型 但是 你可以用新的EXTRACT函数来提取和合并这些片段 格式如下
EXTRACT(timepart FROM interval_expression)
列表B给出了一个运用这种方法的例子
列表B
SELECT EXTRACT(DAY FROM experiment_duration) ||
days || EXTRACT (HOUR FROM experiment_duration) ||
hours || EXTRACT (MINUTE FROM experiment_duration) ||
minutes Duration
FROM experiment
DURATION
days hours minutes
lishixinzhi/Article/program/Oracle/201311/16775
Q2: oracle中查询介于两个日期之间的记录
select ename,to_char(hiredate,'yyyymmdd') as c from emp
where to_char(hiredate,'yyyy')='1981';
---
以上,希望对你有所帮助。
Q3: oracle plsql 如何查询两个间隔日期之间的数据,如查询2013-1-2 19:00到21:00之间的数据
select * from emp where to_char(hiredate,'yyyy-MM-dd hh:mm:ss')='2013-1-2 19:00' and to_char(hiredate,'yyyy-MM-dd hh:mm:ss')='2013-1-2 21:00' ;
其中hiredate是日期字段。
Q4: oracle 过程定义两个日期变量 如何循环处理两个日期之间每天的数据
set serveroutput on
DECLARE
V_RQ1 DATE;
V_RQ2 DATE;
V_RQ DATE;
BEGIN
V_RQ1 := to_date('2000-01-01','YYYY-MM-DD');
V_RQ2 := to_date('2020-01-01','YYYY-MM-DD');
FOR TABLEINFO IN (SELECT *
FROM USER_OBJECTS
WHERE CREATED BETWEEN V_RQ1 AND V_RQ2) LOOP
DBMS_OUTPUT.PUT_LINE(TABLEINFO.CREATED);
END LOOP;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
/
可以参考下这个
Q5: ORACLE中怎样得到两个日期间的月数
excel自带的简单/完美的公式:
假设小日期在a1,大日期在a2,用公式
=datedif(a1,a2,"y")"年"datedif(a1,a2,"ym")"月"datedif(a1,a2,"md")"天"
就可以了。
oracle在两个日期之间数据的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle两个日期之间相隔天数、oracle在两个日期之间数据的信息别忘了在本站进行查找喔。







