PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Работа с дати в PostgreSQL


Въведение

Възможността да съхранявате стойности за дати във вашата база данни ви позволява да добавите елемент от време към вашите заявки и анализ на вашите данни. Важно е да знаете как да работите с типове дати във вашата съответна база данни, за да можете да бъдете точни в отчитането си, независимо дали става въпрос за информация за поръчка, възраст на хората или друг случай на употреба.

В това ръководство ще обсъдим съхраняването на DATE типове в PostgreSQL и различните начини, по които можете да работите с тях.



PostgreSQL DATE тип данни

DATE тип в PostgreSQL може да съхранява дата без свързана стойност за време:

DATE

PostgreSQL използва 4 байта за съхранение на стойност за дата. Диапазонът от стойности за стойностите на датите в PostgreSQL е от 4713 г. пр.н.е. до 5874897 г. сл. Хр.

Когато съхранява стойност за дата, PostgreSQL използва yyyy-mm-dd формат напр. 1994-10-27. Този формат се използва и в PostgreSQL за вмъкване на данни.

В PostgreSQL е възможно да се зададе стойност за дата по подразбиране на текущата дата. Това може да стане при създаването на вашата таблица с помощта на DEFAULT и CURRENT_DATE ключови думи. last_checkout колона от нашата таблица за изплащане на библиотека приема текущата дата по подразбиране:

CREATE TABLE checkouts (        author_id serial PRIMARY KEY,        author_name VARCHAR (255) NOT NULL,        book_title VARCHAR (255) NOT NULL,        published_date DATE NOT NULL,          last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);

Следвайки тази структура на таблицата, можем да вмъкнем данни с INSERT INTO изявление:

INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');

След това при запитване на checkouts таблица, получаваме следното:

SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+---------------         1 | James Joyce |   Ulysses  |   1922-02-02   |  2021-09-27(1 row)


PostgreSQL DATE функции

Познавайки тънкостите на DATE въведете PostgreSQL, след това можете да използвате функции, работещи с информацията, която съхранявате. Ще разгледаме някои общи функции, изграждащи се от таблицата, въведена в предишния раздел.


Вземете текущата дата

В PostgreSQL можете да получите текущата дата и час, като използвате вградения NOW() функция. Следното изявление ще върне както деня, така и часа:

SELECT NOW();              now              ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)

Ако часът не представлява интерес, можете също да посочите да връщате датата само с двойни двоеточия :: за предаване на DATETIME стойност към DATE стойност:

SELECT NOW()::date;    now     ------------ 2021-09-27(1 row)

Използва се CURRENT_DATE е друг начин да получите текущата дата, както е показано по-долу:

SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)

И трите от тези опции ще ви върнат датата в yyyy-mm-dd формат. В PostgreSQL можете да коригирате формата на този изход, ако желаете.



Извеждане на стойност за дата в конкретен формат

За да изведете стойност на дата в конкретен формат, използвате TO_CHAR() функция. Тази функция приема два параметъра:

  1. стойността, която искате да форматирате
  2. шаблонът, който дефинира изходния формат
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy');  to_char   ------------ 27/09/2021(1 row)

Можете също да покажете датата във формат като Sep 27, 2021 :

SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy');   to_char    -------------- Sep 27, 2021(1 row)

В зависимост от изискванията на системата може да се нуждаете от дата, форматирана по специфичен начин. Това е сценарий, при който възможността да посочите изхода в PostgreSQL е полезна.



Вземете интервала между две дати

PostgreSQL ви позволява да получите интервала между две дати с помощта на - оператор. Използването на този оператор ви позволява да изчислявате неща като стаж на служител или време след публикуването на книга.

В нашия пример искаме да намерим колко дни са минали от Одисес на Джойс беше публикуван чрез изваждане на текущата дата от published_date :

SELECT                author_name,                book_title,                now()::date - published_date as diffFROM                checkouts;

В резултат на:

 author_name | book_title |            diff            -------------+------------+---------------------------- James Joyce |  Ulysses   |         36397 days (1 row)


Изчисляване на възрастта с помощта на стойности за дата

Можем да продължим със същия пример, за да изчислим възрастта към текущата дата в години, месеци и дни, използвайки AGE() функция. Следното изявление използва AGE() функция за изчисляване на възрастта на публикация от нашата библиотека checkouts таблици:

SELECT                author_name,                book_title,                AGE(published_date)FROM                checkouts;

С тази функция можем да изчислим колко е стара книга в инвентара:

 author_name | book_title |           age           -------------+------------+------------------------- James Joyce |  Ulysses   | 99 years 7 mons 25 days(1 row)

Важно е да се отбележи, че ако подадете една дата в AGE() функция, тогава тя автоматично ще използва текущата дата за изваждане и изчисляване. Можете също така да предадете две дати във функцията за изчисляване на възрастта, като например:

SELECT                author_name,                book_title,                AGE('2000-01-01',published_date),FROM                checkouts;

В резултат на:

 author_name | book_title |           age            -------------+------------+-------------------------- James Joyce |  Ulysses   | 77 years 10 mons 27 days(1 row)


Извличане на година, тримесечие, месец, седмица или ден от стойност за дата

Последната функция, която ще разгледаме, е EXTRACT() функция в PostgreSQL, която ви позволява да разделяте компонентите на датата като година, тримесечие, месец и ден.

Следното изявление изважда годината, месеца и деня от публикуваната дата на Ulysses :

SELECT             author_name,             book_title,             EXTRACT(YEAR FROM published_date) AS YEAR,            EXTRACT(MONTH FROM published_date) AS MONTH,             EXTRACT(DAY FROM published_date) AS DAY FROM             checkouts;

Резултатите ще изглеждат по следния начин:

 author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce |  Ulysses   | 1922 |   2   |  2(1 row)

Това е полезна функция, за която трябва да знаете, когато може да се нуждаете само от част от стойността на датата за изчисление с вашите данни например.




Заключение

В това ръководство разгледахме основите на това, което можете да правите с DATE тип данни в PostgreSQL. Важно е да знаете как работят данните за дата във вашата база данни. Познаването на начините, по които можете да получите достъп до него и да работите с него, ви позволява да правите изчисления на възрастта, да изпълнявате извличания във вашите заявки и също така да конфигурирате изхода си, ако е необходимо, за да отговаряте на изискванията на друга система.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL неправилно сортиране

  2. Postgres поддържа ли вложени или автономни транзакции?

  3. Какъв е редът по подразбиране на списък, върнат от извикване на филтър на Django?

  4. Изпълнете роден sql с хибернация

  5. Работа с дати в PostgreSQL