PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Ottieni il primo giorno del mese in PostgreSQL

Possiamo usare il seguente metodo in PostgreSQL per restituire il primo giorno di un determinato mese.

Potrebbe essere il primo giorno del mese corrente o il primo giorno del mese in base a una data da noi specificata.

Ottenere il primo giorno del mese ci consente di eseguire ulteriori calcoli sulla data risultante, come aggiungere un certo numero di giorni all'inizio del mese, ecc.

Inizio del mese in corso

Ecco un esempio che restituisce il primo giorno del mese corrente:

SELECT date_trunc('month', now());

Risultato:

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

Questo utilizza date_trunc() di PostgreSQL funzione per restituire i risultati desiderati. Questa funzione tronca un valore di data/ora con una precisione specificata.

In questo caso utilizzo now() funzione per restituire la data corrente e il 'month' l'argomento modifica tale data all'inizio del mese.

Possiamo eseguirne il cast su un valore di data, se necessario:

SELECT date_trunc('month', now())::date;

Risultato:

2022-04-01

Eccolo di nuovo, insieme alla data effettiva in cui ho eseguito l'esempio:

SELECT 
    now()::date AS "Current Date",
    date_trunc('month', now())::date AS "Start of Month";

Risultato:

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

Inizio di un mese specifico

Non deve essere l'inizio del mese corrente. Possiamo specificare qualsiasi data e restituirà l'inizio del mese, in base a quella data.

Esempio:

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

Risultato:

2030-07-01

Possiamo quindi utilizzare il risultato per eseguire altre azioni su di esso. Ad esempio, possiamo aggiungere un determinato numero di giorni al risultato in questo modo:

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

Risultato:

2030-07-21

Esempio di database

Ecco un esempio che utilizza le date di un database:

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;

Risultato:

+---------------------+----------------------+-----------------------+
|     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            |
+---------------------+----------------------+-----------------------+