Problema:
Le gustaría mostrar la fecha de ayer (sin hora) en una base de datos PostgreSQL.
Solución 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Suponiendo que hoy es 2020-09-24, el resultado es:
yesterday_date |
---|
2020-09-23 |
Discusión:
Para obtener la fecha de ayer, debe restar un día a la fecha de hoy. Usar current_date
para obtener la fecha de hoy. Tenga en cuenta que no necesita corchetes al final de current_date
función. En PostgreSQL, puede restar o sumar cualquier número de días usando el INTEGER
palabra clave. Aquí, dado que necesita restar un día, use - INTEGER '1'
para obtener la fecha de ayer. Tenga en cuenta que el resultado de este cálculo todavía tiene el tipo de columna date
.
Solución 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Suponiendo que hoy es 2020-09-24, el resultado es:
yesterday_date |
---|
2020-09-23 |
Discusión:
Obtenga la fecha de hoy usando current_date
. Debe restar un intervalo de un día a la fecha actual. Para ello, utilice el INTERVAL
palabra clave, que crea cualquier intervalo de tiempo/fecha que desee (aquí, '1 day'
, que en PostgreSQL es lo mismo que 24 horas). Restando INTERVAL '1 day'
desde la fecha de hoy dará como resultado una columna formateada como una marca de tiempo, por lo que debe convertirla a date
. La forma más rápida de hacerlo en PostgreSQL es agregar ::date
a toda la expresión (recuerde encerrar la expresión entre paréntesis).
Por supuesto, puede retroceder en cualquier intervalo de tiempo con la misma facilidad. He aquí un ejemplo:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
Un INTERVAL
también se puede añadir a una fecha Entonces, aquí hay una forma si desea obtener la fecha de mañana:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;