当我使用datediff函数计算日期差异时,它显示无效标识符。
SELECT DATEDIFF(day,'2008-08-05','2008-06-05') AS DiffDate from da_static_trade.
Error : invalid identifier.
请问有什么函数可以计算日期之间的差异吗?
Oracle中没有DATEDIFF()
函数。在Oracle中,这是一个算术问题。
select DATE1-DATE2 from table
Oracle支持在Data数据类型上使用数学减法运算符-
。您可以直接在select语句中使用以下语句:
to_char (s.last_upd – s.created, ‘999999D99′)
如果需要以小时为单位输出结果,则以下内容可能会有所帮助;
请查看示例以获取更多信息。
Select to_number(substr(numtodsinterval([END_TIME]-[START_TIME]),’day’,2,9))*24 +
to_number(substr(numtodsinterval([END_TIME]-[START_TIME],’day’),12,2))
||':’||to_number(substr(numtodsinterval([END_TIME]-[START_TIME],’day’),15,2))
from [TABLE_NAME];
您不能使用 DATEDIFF
函数,但是如果列不是日期类型,您可以使用以下方法:
SELECT
to_date('2008-08-05','YYYY-MM-DD')-to_date('2008-06-05','YYYY-MM-DD')
AS DiffDate from dual
SET FEEDBACK OFF;
SET SERVEROUTPUT ON;
DECLARE
V_START_DATE CHAR(17) := '28/03/16 17:20:00';
V_END_DATE CHAR(17) := '30/03/16 17:50:10';
V_DATE_DIFF VARCHAR2(17);
BEGIN
SELECT
(TO_NUMBER( SUBSTR(NUMTODSINTERVAL(TO_DATE(V_END_DATE , 'DD/MM/YY HH24:MI:SS') - TO_DATE(V_START_DATE, 'DD/MM/YY HH24:MI:SS'), 'DAY'), 02, 9)) * 24) +
(TO_NUMBER( SUBSTR(NUMTODSINTERVAL(TO_DATE(V_END_DATE , 'DD/MM/YY HH24:MI:SS') - TO_DATE(V_START_DATE, 'DD/MM/YY HH24:MI:SS'), 'DAY'), 12, 2))) ||
SUBSTR(NUMTODSINTERVAL(TO_DATE(V_END_DATE , 'DD/MM/YY HH24:MI:SS') - TO_DATE(V_START_DATE, 'DD/MM/YY HH24:MI:SS'), 'DAY'), 14, 6) AS "HH24:MI:SS"
INTO V_DATE_DIFF
FROM
DUAL;
DBMS_OUTPUT.PUT_LINE(V_DATE_DIFF);
END;
基本上,to_char(sysdate,'DDD') 返回从 1-jan-yyyy 到 sysdate 的天数,因此如果减去两个日期,它将返回它们之间的差异,你将得到两个日期之间的差异
从双重选择中选择 to_char(sysdate,'DDD') -to_char(to_date('19-08-1995','dd-mm-yyyy'),'DDD')
在选择语句中使用以下内容:
(((cast(<column_end_date> as date) - cast(<column_start_date> as date)) * 24 * 60)/60) as "SECONDS"
这应该适用于您的情况。
Oracle DateDiff可能是来自不同的产品,可能是mysql(现在属于Oracle)。
在Oracle通常的数据库产品中,两个日期之间的差异以天为单位(可以有小数部分)。乘以24得到小时,乘以24 * 60得到分钟,乘以24 * 60 * 60得到秒(这是日期能表示的最小单位)。对于几百年内的日期,这些计算是100%准确的。 例如,要获得今天午夜前一秒的日期,可以这样写:
select trunc(sysdate) - 1/24/60/60 from dual;
这意味着“现在的时间”,被截断为仅日期(即今天凌晨的时刻)。然后减去一个数字,该数字是测量一秒钟的1天的一小部分。这给出了昨天的日期,其时间组件为23:59:59。