Въведение
Възможността да съхранявате стойности за дати във вашата база данни ви позволява да добавите елемент от време към вашите заявки и анализ на вашите данни. Важно е да знаете как да работите с типове дати във вашата съответна база данни, за да можете да бъдете точни в отчитането си, независимо дали става въпрос за информация за поръчка, възраст на хората или друг случай на употреба.
В това ръководство ще обсъдим съхраняването на 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()
функция. Тази функция приема два параметъра:
- стойността, която искате да форматирате
- шаблонът, който дефинира изходния формат
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. Важно е да знаете как работят данните за дата във вашата база данни. Познаването на начините, по които можете да получите достъп до него и да работите с него, ви позволява да правите изчисления на възрастта, да изпълнявате извличания във вашите заявки и също така да конфигурирате изхода си, ако е необходимо, за да отговаряте на изискванията на друга система.