sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo obtener la fecha de ayer en PostgreSQL

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;