sql >> Databáze >  >> RDS >> PostgreSQL

Získejte první den v měsíci v PostgreSQL

K vrácení prvního dne daného měsíce můžeme v PostgreSQL použít následující metodu.

Může to být první den aktuálního měsíce nebo první den měsíce podle data, které určíme.

Získání prvního dne v měsíci nám umožňuje provádět další výpočty k výslednému datu, jako je přidání určitého počtu dní k začátku měsíce atd.

Začátek aktuálního měsíce

Zde je příklad, který vrací první den aktuálního měsíce:

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

Výsledek:

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

Toto používá PostgreSQL date_trunc() funkci vrátit výsledky, které chceme. Tato funkce zkrátí hodnotu data/času na zadanou přesnost.

V tomto případě používám now() funkce vrátí aktuální datum a 'month' argument upraví toto datum na začátek měsíce.

V případě potřeby jej můžeme přetypovat na hodnotu data:

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

Výsledek:

2022-04-01

Tady je to znovu, spolu se skutečným datem, kdy jsem spustil příklad:

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

Výsledek:

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

Začátek určeného měsíce

Nemusí to být začátek aktuálního měsíce. Můžeme zadat libovolné datum a vrátí začátek měsíce na základě tohoto data.

Příklad:

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

Výsledek:

2030-07-01

Výsledek pak můžeme použít k provádění dalších akcí na něm. Například můžeme k výsledku přidat daný počet dní takto:

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

Výsledek:

2030-07-21

Příklad databáze

Zde je příklad, který používá data z databáze:

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;

Výsledek:

+---------------------+----------------------+-----------------------+
|     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. Jak vybrat z MySQL, kde je název tabulky Variabilní

  2. 2 způsoby, jak vypsat všechny funkce v MySQL

  3. Pokus o získání vlastnosti neobjektu - CodeIgniter

  4. Proč dostávám parametr 2 nemohu předat chybou odkazu, když používám bindParam s konstantní hodnotou?