PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Obtenha o primeiro dia do mês no PostgreSQL


Podemos usar o seguinte método no PostgreSQL para retornar o primeiro dia de um determinado mês.

Este pode ser o primeiro dia do mês atual ou o primeiro dia do mês com base em uma data que especificamos.

Obter o primeiro dia do mês nos permite realizar cálculos adicionais na data resultante, como adicionar um certo número de dias ao início do mês, etc.

Início do mês atual


Aqui está um exemplo que retorna o primeiro dia do mês atual:
SELECT date_trunc('month', now());

Resultado:
2022-04-01 00:00:00+10

Isso usa o date_trunc() do PostgreSQL função para retornar os resultados que queremos. Esta função trunca um valor de data/hora para uma precisão especificada.

Neste caso eu uso o now() função para retornar a data atual e o 'month' argumento modifica essa data para o início do mês.

Podemos convertê-lo em um valor de data, se necessário:
SELECT date_trunc('month', now())::date;

Resultado:
2022-04-01

Aqui está novamente, junto com a data real em que executei o exemplo:
SELECT 
    now()::date AS "Current Date",
    date_trunc('month', now())::date AS "Start of Month";

Resultado:
+--------------+----------------+
| Current Date | Start of Month |
+--------------+----------------+
| 2022-04-09   | 2022-04-01     |
+--------------+----------------+

Início de um mês especificado


Não precisa ser o início do mês atual. Podemos especificar qualquer data e retornará o início do mês, com base nessa data.

Exemplo:
SELECT date_trunc('month', date '2030-07-14')::date;

Resultado:
2030-07-01

Podemos então usar o resultado para realizar outras ações nele. Por exemplo, podemos adicionar um determinado número de dias ao resultado assim:
SELECT date_trunc('month', date '2030-07-14')::date + 20;

Resultado:
2030-07-21

Exemplo de banco de dados


Aqui está um exemplo que usa datas de um banco de dados:
SELECT
    rental_date,
    date_trunc('month', rental_date)::date AS "The 1st of the Month",
    date_trunc('month', rental_date)::date + 19 AS "The 20th of the Month"
FROM rental WHERE customer_id = 459 LIMIT 10;

Resultado:
+---------------------+----------------------+-----------------------+
|     rental_date     | The 1st of the Month | The 20th of the Month |
+---------------------+----------------------+-----------------------+
| 2005-05-24 22:54:33 | 2005-05-01           | 2005-05-20            |
| 2005-06-17 02:50:51 | 2005-06-01           | 2005-06-20            |
| 2005-06-17 09:38:22 | 2005-06-01           | 2005-06-20            |
| 2005-06-17 16:40:33 | 2005-06-01           | 2005-06-20            |
| 2005-06-20 02:39:21 | 2005-06-01           | 2005-06-20            |
| 2005-06-20 12:35:44 | 2005-06-01           | 2005-06-20            |
| 2005-06-20 12:42:00 | 2005-06-01           | 2005-06-20            |
| 2005-06-21 02:39:44 | 2005-06-01           | 2005-06-20            |
| 2005-07-06 00:22:29 | 2005-07-01           | 2005-07-20            |
| 2005-07-08 02:51:23 | 2005-07-01           | 2005-07-20            |
+---------------------+----------------------+-----------------------+