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 Comentarios

  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.

Dejar respuesta

Please enter your comment!
Please enter your name here