Lorsque je tente de calculer la différence de date à l’aide de la fonction de datiff, cet identifiant non valide est affiché.
SELECT DATEDIFF(day,'2008-08-05','2008-06-05') AS DiffDate from da_static_trade.
Error : invalid identifier.
Pouvez-vous s'il vous plaît me dire quelle est la fonction pour calculer la différence de date.
Il n'y a pas de fonction DATEDIFF()
dans Oracle. Sur Oracle, c'est un problème arithmétique
select DATE1-DATE2 from table
Oracle prend en charge Mathematical Subtract -
sur le type de données. Vous pouvez directement mettre dans la clause suivante la déclaration suivante:
to_char (s.last_upd – s.created, ‘999999D99′)
Consultez l'exemple EXEMPLE pour plus de visibilité.
Au cas où vous auriez besoin de la sortie en termes d’heures, l’aide ci-dessous pourrait vous aider;
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];
Vous ne pouvez pas utiliser DATEDIFF
Mais vous pouvez utiliser ceci (si les colonnes ne sont pas de type date):
SELECT
to_date('2008-08-05','YYYY-MM-DD')-to_date('2008-06-05','YYYY-MM-DD')
AS DiffDate from dual
Vous pouvez utiliser ceci:
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;
en gros, to_char (sysdate, 'DDD') ne renvoie pas de jours du 1 er janvier au aaaa à sysdate de sorte que si vous soustrayez deux dates, vous obtiendrez une différence
sélectionnez to_char (sysdate, 'DDD') -to_char (to_date ('19-08-1995 ',' jj-mm-aaaa '),' DDD ') de dual;