sql >> Base de Datos >  >> RDS >> Oracle

Fecha y hora en la cláusula Where Oracle

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') convierte una cadena (primer argumento) en cierto formato (segundo argumento) a una fecha.

(create_date / ( 60 * 60 * 24 )) crear_fecha contiene segundos, esta expresión los convierte en el número de días (1 minuto =60 segundos, 1 hora =60 minutos, 1 día =24 horas => 60*60*24 =el número de segundos en un día). Cuando agrega un número a una fecha, Oracle piensa que este número contiene días, por eso necesita esa conversación.

TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS') + (create_date / ( 60 * 60 * 24 )) te da una fecha almacenada en create_date pero en formato "tradicional"

Parece que necesita comparar la hora de Unix con la fecha. Sería mejor usar esta condición:

Select
....
From
...
Where create_date = trunc( (TO_DATE('06/30/14 21:41:11', 'MM/DD/YY HH24:MI:SS') 
                          - TO_DATE('01/01/1970 00:00:00', 'MM/DD/YYYY HH24:MI:SS')
                           ) * 24 * 60 * 60
                         );