2011-04-04 22 views
7

Soy nuevo en la base de datos de Oracle. No tengo mucho conocimiento sobre conceptos de fecha y hora en Oracle. El problema al que me enfrento es recuperar los registros que se ingresan en una fecha determinada. Pero cuando estoy ejecutando una consulta SQL en la base de datos, devuelve cero registros.¿Cómo extraer solo el valor de fecha del campo de fecha en Oracle?

La base de datos tiene un campo de fecha que contiene registros con ambos valores de fecha y hora.

de consultas SQL: SELECT * FROM table WHERE table.daterecord = to_date(03-Mar-2010)

No muestra ningún disco, pero si cambio de consulta a

SELECT * FROM table WHERE table.daterecord > to_date(04-Mar-2010) 

Se volverá algunos registros. La diferencia anterior es por el tiempo. ¿Cómo puedo extraer el valor del tiempo de la fecha? ¿Puedo usar la función trunc para esto? Gracias de antemano por sus valiosas sugerencias.

Respuesta

4

puede utilizar TRUNC

Por ejemplo:

SELECT * 
    FROM table 
WHERE TRUNC(table.daterecord) = TO_DATE('03-Mar-2010', 'DD-MON-RRRR') 
15

Sí, puedes usar la función TRUNCAR.

SELECT * 
    FROM table 
WHERE TRUNC(table.daterecord) = TO_DATE('03-Mar-2010', 'DD-MON-RRRR') 
7

¿Vé este SO para sugerencias de "How to correctly handle dates in queries constraints"?

Además de las respuestas que se facilitan, se recomienda usar una gama ya que esto es más fácilmente indexable:

SELECT * 
    FROM table 
WHERE table.daterecord >= TO_DATE('03-Mar-2010', 'DD-MON-RRRR') 
    AND table.daterecord < TO_DATE('04-Mar-2010', 'DD-MON-RRRR') 
+0

+1, me gusta este debido a la capacidad de utilizar el índice (vs trunc) – tbone

+0

1 para su respuesta en la otra pregunta :) – Ronnis

+0

Dado que sabe que esta es una pregunta duplicada, debería haber votado para cerrar la pregunta, en lugar de duplicar su respuesta. No es como si realmente necesitaras los puntos. – APC

Cuestiones relacionadas