sql - ultima - Oracle: ¿Cómo puedo seleccionar los registros SOLAMENTE de ayer?
seleccionar solo un registro sql (5)
He pasado horas buscando en la web una respuesta a esta pregunta ...
Esto es lo que tengo actualmente:
select *
from order_header oh
where tran_date = sysdate-1
Gracias por adelantado.
¡Este comentario es para los lectores que han encontrado esta entrada pero están usando mysql en lugar de oracle! en mysql puedes hacer lo siguiente: Hoy
SELECT *
FROM
WHERE date(tran_date) = CURRENT_DATE()
Ayer
SELECT *
FROM yourtable
WHERE date(tran_date) = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)
Si no admite transacciones con fecha futura, algo como esto podría funcionar:
AND oh.tran_date >= trunc(sysdate-1)
Utilizar:
AND oh.tran_date BETWEEN TRUNC(SYSDATE - 1) AND TRUNC(SYSDATE) - 1/86400
Referencia: TRUNC
Llamar a una función en el tran_date
significa que el optimizador no podrá usar un índice (suponiendo que exista uno) asociado con él. Algunas bases de datos, como Oracle, admiten índices basados en funciones que permiten realizar funciones en los datos para minimizar el impacto en tales situaciones, pero los DBA de IME no lo permiten. Y estoy de acuerdo, no son realmente necesarios en este caso.
to_char(tran_date, ''yyyy-mm-dd'') = to_char(sysdate-1, ''yyyy-mm-dd'')
trunc(tran_date) = trunc(sysdate -1)