per selezionare la data corrente (oggi) prima della mezzanotte (un secondo prima) è possibile utilizzare una delle seguenti dichiarazioni:
SELECT TRUNC(SYSDATE + 1) - 1/(24*60*60) FROM DUAL
SELECT TRUNC(SYSDATE + 1) - INTERVAL '1' SECOND FROM DUAL;
Cosa fa:
- Sum un giorno a
SYSDATE
: SYSDATE + 1
, ora la data è Domani
- Rimuovi ora parte della data con
TRUNC
, ora la data è Domani alle 00:00
- Sottrarre un secondo dalla data:
- 1/(24*60*60)
o - INTERVAL '1' SECOND FROM DUAL
, ora la data è oggi al 11:59:59
Nota 1: Se si desidera controllare gli intervalli di data che si potrebbe desiderare di controllare @Allan risposta qui sotto .
Nota 2: In alternativa è possibile utilizzare questo altro (che è più facile da leggere):
SELECT TRUNC(SYSDATE) + INTERVAL '23:59:59' HOUR TO SECOND FROM DUAL;
- rimuovere parte ora della data corrente con
TRUNC
, ora la data è oggi alle 00:00
- Aggiungere un intervallo di tempo di
23:59:59
, ora la data è Oggi alle 11:59:59
Nota 3: Per controllare i risultati che si potrebbe desiderare di aggiungere Formato:
SELECT TO_CHAR(TRUNC(SYSDATE + 1) - 1/(24*60*60),'yyyy/mm/dd hh24:mi:ss') FROM DUAL
SELECT TO_CHAR(TRUNC(SYSDATE + 1) - INTERVAL '1' SECOND,'yyyy/mm/dd hh24:mi:ss') FROM DUAL
SELECT TO_CHAR(TRUNC(SYSDATE) + INTERVAL '23:59:59','yyyy/mm/dd hh24:mi:ss') FROM DUAL
Le ambiguità devono essere risolte con la persona per la quale si sta svolgendo questo lavoro. –