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

Få den første dag i måneden i PostgreSQL

Vi kan bruge følgende metode i PostgreSQL til at returnere den første dag i en given måned.

Dette kan være den første dag i den aktuelle måned eller den første dag i måneden baseret på en dato, som vi angiver.

At få den første dag i måneden giver os mulighed for at udføre yderligere beregninger på den resulterende dato, som f.eks. at tilføje et bestemt antal dage til starten af ​​måneden osv.

Begyndelsen af ​​den aktuelle måned

Her er et eksempel, der returnerer den første dag i den aktuelle måned:

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

Resultat:

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

Dette bruger PostgreSQL's date_trunc() funktion for at returnere de resultater, vi ønsker. Denne funktion afkorter en dato/tidsværdi med en specificeret præcision.

I dette tilfælde bruger jeg now() funktion for at returnere den aktuelle dato og 'month' argument ændrer denne dato til begyndelsen af ​​måneden.

Vi kan caste det til en datoværdi, hvis det kræves:

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

Resultat:

2022-04-01

Her er det igen, sammen med den faktiske dato, hvor jeg kørte eksemplet:

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

Resultat:

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

Start af en specificeret måned

Det behøver ikke at være starten på den aktuelle måned. Vi kan angive en hvilken som helst dato, og den vil returnere begyndelsen af ​​måneden, baseret på den dato.

Eksempel:

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

Resultat:

2030-07-01

Vi kan derefter bruge resultatet til at udføre andre handlinger på det. For eksempel kan vi tilføje et givet antal dage til resultatet på denne måde:

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

Resultat:

2030-07-21

Databaseeksempel

Her er et eksempel, der bruger datoer fra en 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;

Resultat:

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

  1. PLSQL JDBC:Hvordan får man sidste række-id?

  2. Udforsker Storage Engine-indstillinger for MariaDB

  3. Ulovlig blanding af sammenstillinger MySQL-fejl

  4. Indsæt et billede i postgresql database