Oracle Cláusula where de SQL contra una columna de fecha

Tengo una columna de FECHA con una fecha en ti, pero necesito una consulta para buscar los registros de menos de 30 días de edad.

START_DATE
----------
01-AUG-2010
09-AUG-2010
22-AUG-2010
09-SEP-2010

Consulta:

SELECT START_DATE
 WHERE START_DATE < 30;

Sé que es simple Consulta en SQL de ORACLE, pero estoy haciendo algo mal.

InformationsquelleAutor anwarma | 2010-11-03

3 Kommentare

  1. -1

    DONDE START_DATE > SYSDATE – 1

    o tal vez

    DONDE TRIM(STARTDATE) > RECORTAR(SYSDATE) – 1

    • Creo que en Oracle que sumar (o restar) un número a una fecha agrega que muchos de los días, por lo que sólo resta 1 día de sysdate. También, no estoy seguro de por qué recortar sysdate.
    • Creo que quiso decir TRUNC, pero no es bueno para correr contra la columna de la tabla.
    • Sí, bien escrito mal 1 en lugar de 30 🙂
  2. 7

    Uso:

    SELECT t.start_date
      FROM YOUR_TABLE t
     WHERE t.start_date > SYSDATE - 30
    • SYSDATE es Oracle sintaxis para obtener la fecha actual y la hora
    • En Oracle, puede hacer operaciones aritméticas de fecha en el contexto de días, así que SYSDATE – 30 significa «fecha actual, restar treinta días» para obtener una fecha que es de treinta días en el pasado

    Si desea evaluar la función de la fecha en treinta días a partir de la medianoche, el uso de la Función TRUNC:

    SELECT t.start_date
      FROM YOUR_TABLE t
     WHERE t.start_date > TRUNC(SYSDATE) - 30

    No ejecutar TRUNC en la columna que va a representar un índice en la columna inútil, asegurando un examen de la tabla.

    • Alternativamente, usted podría tratar de where months_between (sysdate,t.start_date) <= 1. Aunque creo que podría obtener resultados ligeramente diferentes, dependiendo de las longitudes de los meses en cuestión. months_between existe en Oracle, pero no sé si otras bases de datos implementar una funcionalidad similar.
    • Cierto, pero la suma/resta un mes no está garantizado a ser de treinta días, es decir restar de un mes desde el 29 de Marzo… 🙂
    • Verdadero. A veces los requisitos de decir «3 meses antes de…» y a veces dicen «90 días antes de…» y algunas personas parecen pensar que son equivalentes por lo que decir uno cuando quieren decir los demás. Así que, yo de código a un solo estándar para averiguar que significaba que de la otra manera…
    • Sí, yo soy un purista de la finitos requisitos – contador productivo para el desarrollo Ágil en general, pero no veo el punto en la codificación por algo que el cliente no comprender bien. Los desechos de nuestro tiempo y su dinero… pero algunos necesitan para comprender lo que realmente quiere :/
  3. 3
    SELECT t.start_date
      FROM YOUR_TABLE t
     WHERE t.start_date > SYSDATE - INTERVAL '30' DAY;

    INTERVAL es más portátil que suponiendo que usted puede agregar o restar días, aunque he notado algunas diferencias leves en el INTERVAL sintaxis entre Oracle y PostgreSQL.

    • Fecha de manejo no es muy portable entre bases de datos, tristemente.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea