PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zdobądź pierwszy dzień miesiąca w PostgreSQL

Możemy użyć następującej metody w PostgreSQL, aby zwrócić pierwszy dzień danego miesiąca.

Może to być pierwszy dzień bieżącego miesiąca lub pierwszy dzień miesiąca na podstawie określonej przez nas daty.

Uzyskanie pierwszego dnia miesiąca pozwala nam na wykonanie dalszych obliczeń w otrzymanym dniu, np. dodanie określonej liczby dni do początku miesiąca itp.

Początek bieżącego miesiąca

Oto przykład, który zwraca pierwszy dzień bieżącego miesiąca:

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

Wynik:

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

To używa date_trunc() PostgreSQLa funkcja, aby zwrócić wyniki, które chcemy. Ta funkcja obcina wartość daty/godziny do określonej precyzji.

W tym przypadku używam now() funkcja zwracająca bieżącą datę i 'month' argument modyfikuje tę datę na początek miesiąca.

W razie potrzeby możemy rzutować go na wartość daty:

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

Wynik:

2022-04-01

Oto znowu, wraz z faktyczną datą uruchomienia przykładu:

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

Wynik:

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

Początek określonego miesiąca

Nie musi to być początek bieżącego miesiąca. Możemy określić dowolną datę, a zwróci początek miesiąca na podstawie tej daty.

Przykład:

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

Wynik:

2030-07-01

Możemy następnie wykorzystać wynik do wykonania na nim innych działań. Na przykład możemy dodać do wyniku podaną liczbę dni w ten sposób:

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

Wynik:

2030-07-21

Przykład bazy danych

Oto przykład wykorzystujący daty z bazy danych:

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;

Wynik:

+---------------------+----------------------+-----------------------+
|     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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. czy adapter rails postgres obsługuje SSL?

  2. Unikanie zakleszczeń PostgreSQL podczas wykonywania zbiorczych operacji aktualizacji i usuwania

  3. Najlepszy sposób na sprawdzenie pustej lub zerowej wartości

  4. Replikacja Londiste z PostgreSQL 9.0

  5. Zadanie cron do usuwania starych danych z postgres na debianie