¿Cómo listar registros con fecha de los últimos 10 días?

101
SELECT Table.date FROM Table WHERE date > current_date - 10;

¿Funciona esto en PostgreSQL?

nunos
fuente

Respuestas:

190

Sí, esto funciona en PostgreSQL (asumiendo que la columna " fecha " es de tipo de datos date) ¿Por qué no lo intentas?

El formato estándar ANSI SQL sería:

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

Prefiero ese formato porque facilita la lectura (pero es lo mismo que current_date - 10).

un caballo sin nombre
fuente
1
La consulta debe ser: SELECT Table.date FROM Table WHERE fecha> fecha_actual - intervalo '10 días ';
user2694306
4
@ user2694306: interval '10 day'es la sintaxis de Postgres. interval '10' dayes la sintaxis basada en el estándar SQL y también es compatible con Postgres
a_horse_with_no_name
1
el intervalo debe ser 9 . 10 en realidad te devuelve 11 días a partir de hoy.
David He
1
@DavidHe: esto hace lo mismo que la respuesta original. Que usa 10, no9
a_horse_with_no_name
3
Solo una nota: en Redshift, la fórmula de @ user2694306 funciona: intervalo '10 días '. El día del intervalo '10' no funciona en Redshift.
Ben
9

Mi entendimiento de mis pruebas (y el dox de PostgreSQL ) es que las citas deben hacerse de manera diferente a las otras respuestas, y también deben incluir "día" como este:

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

Demostrado aquí (debería poder ejecutar esto en cualquier base de datos de Postgres):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

Resultado:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00
Altamente irregular
fuente
En realidad, no me di cuenta de que la respuesta de Bradley era correcta. De todos modos, dejaré la mía aquí como prueba de que es la forma correcta. La respuesta aceptada es incorrecta (al menos para la versión de Postgre que estoy ejecutando)
Altamente irregular
0

Verificaría tipos de datos.

current_date tiene el tipo de datos "date", 10 es un número y Table.date - necesitas mirar tu tabla.

Scherbius.com
fuente
0

también puedes usar entre:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';
Jacks Nogueira
fuente
El betweentiene que ser con el valor más bajo en primer lugar, por lo que este se llevaría a cabo correctamente como SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
Tipo