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

Изследване на форматите за дата на Postgres и техните различни функции

В тази статия ще разгледаме датите в Postgres, различните типове данни за дата, употреби и функции.

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

Postgres има разнообразие от поддържани типове данни. Преди да продължите по-нататък, ви предлагам да разгледате Разглеждане на различните типове данни на Postgres за да ги разберете по-подробно.

Тип данни на Postgres DATE

Postgres използва типа данни DATE за съхраняване на различни дати във формат ГГГГ-ММ-ДД. Той използва 4 байта за съхраняване на стойност за дата в колона.

  • Най-ниска дата:4713 г. пр.н.е.
  • Най-висока дата:5874897 г. пр.н.е.
  • Формат на датата:ГГГГ-ММ-ДД (напр. 2021-01-01)

Можете да проектирате таблица на Postgres с колона DATE и да използвате ключовата дума DEFAULT ТЕКУЩА_ДАТА  за да използвате текущата системна дата като стойност по подразбиране в тази колона.

CREATE TABLE SalesOrders (
Order_id serial PRIMARY KEY,
Orderdetails VARCHAR (255) NOT NULL,
OrderDate DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO SalesOrders (Orderdetails)
VALUES('Sample Order for customer ABC');

SELECT * FROM SalesOrders;

Както е показано по-долу, SQL вмъква стойност за колоната [OrderDate] автоматично с текущата системна дата във формат ГГГГ-ММ-ДД.

Функции на Postgres DATE

Често се налага да променяме формата на датата или да правим изчисления на съществуващи стойности, съхранени в таблицата на Postgres. Например в Индия обичайният формат на датата е ДД-ММ-ГГГГ. Следователно, когато индийски потребител преглежда данните, вероятно ще искаме той да преглежда данните във формата, с който е най-запознат. В този случай SQL функциите играят жизненоважна роля.

Функция TO_CHAR()

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

  • Въведена дата:Това е датата, която искате да конвертирате в конкретен формат.
  • Формат на датата:Тук задавате новия формат на датата.

Следната заявка преобразува съществуващите стойности за дати, съхранени в таблицата [SalesOrders], във формат ДД-ММ-ГГГГ.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As NewDateFormat FROM SalesOrders;

Поддържаните стойности във функцията to_char() са както е показано по-долу.

ГГГГ Година с четири цифри
ГГГ Последните три цифри на годината
ГГ Последните две цифри на годината
МЕСЕЦ Име на месеца с главни букви
Месец Име на месеца с главна буква
месец Име на месеца с малки букви
ПН/Пн/мес Съкращение за месец съответно с главни, първа буква и всички малки букви
MM Номер на месец (01-12)
ДЕН/Ден/ден Име на деня съответно с главни, първа буква и всички малки букви
DDD Ден от годината (001 до 366)
DD Ден от месеца (01 до 31)
D Ден от седмицата (неделя (1) до събота (7))
Ш Седмица на месеца
WW Седмица на годината

Няколко примера за различни формати на дата са посочени в следния SQL.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As DDMMYYYY,
to_char(OrderDate,'DD-MM-YY') As DDMMYY,
to_char(OrderDate,'DD.MM.YY') As "DD.MM.YY",
to_char(OrderDate,'MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DAY MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DDD MM/DD/YYYY') As "DDD MM/DD/YYYY"
FROM SalesOrders

Функция Now()

Функцията Now() връща текущата системна дата (дата и час).

Можете да посочите двойни двоеточия (::), за да прехвърлите стойност DATETIME към стойност DATE.

Можете да комбинирате TO_CHAR() и функцията Now(), за да преобразувате текущото времеви печат в посочения формат.

SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Оператор за минус и интервал

Можете да използвате оператора минус (-), за да изчислите разликата между две дати. Например, заявката по-долу връща интервала между текущата времева марка и [Orderdate] от таблицата SalesOrders.

SELECT Orderdate,now() as currentdate,
now()-Orderdate as Interval FROM SalesOrders
where order_id=2;

Можете също да посочите интервал за връщане на датата след определен период. Например, долната SQL заявка дава следните стойности.

  • За бъдеща дата посочете стойност на интервала 2 часа от текущата времева марка: now() + интервал „2 часа“
  • За бъдеща дата посочете стойност на интервала от 1 ден от текущата времева марка: now() + интервал „1 ден“
  • За минала дата посочете стойност на интервала една година от текущото времеви печат: Сега() – интервал „1 година“
  • Изчислете една година след датата от стойността, съхранена в колоната [Orderdate]: orderdate – интервал „1 година“
SELECT (NOW() + interval '2 hour') AS twohourslater,
(NOW() + interval '1 day') AS Onedaylater,
(NOW() - interval '1 year') AS OneYearBefore,
(Orderdate- interval '1 year') as Orderdatedifference
from salesorders;

функция AGE()

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

Тази функция приема два параметъра за дата и изважда първата стойност на датата от втората.

Ако обърнете стойностите в горния функционален скрипт, той връща стойността в отрицателна стойност.

В друг пример, да кажем, че някой има рождена дата 1990-07-01. Следователно възрастта на дадено лице може да се изчисли, както следва.

SELECT current_date,
AGE(timestamp '1990-07-01') as EmpAge;

Функция EXTRACT()

Функцията Extract() връща деня, седмицата, месеца, годината и тримесечието от посочената стойност за дата.

Извличане на година

SELECT EXTRACT(YEAR FROM TIMESTAMP '2021-06-28 10:30:15') as year;

Извличане на месец

SELECT EXTRACT(Month FROM TIMESTAMP '2021-06-28 10:30:15') as Month;

Извлечете една четвърт

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2021-06-28 10:30:15') as QUARTER;

Извличане на деня от седмицата

SELECT EXTRACT(DOW FROM TIMESTAMP '2021-06-28 10:30:15') as DOW ;

Извличане на деня от годината

SELECT EXTRACT(DOY FROM TIMESTAMP '2021-06-28 10:30:15') as DOY ;

Можете също да използвате функцията EXTRACT() в комбинация с INTERVAL. Например, по-долу посочваме интервала като 7 години 9 месец 20 дни 09 часа 12 минути и 13 секунди. Функцията за извличане връща отделните стойности.

SELECT EXTRACT(YEAR
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Month
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Day
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(hour
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Minute
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' );
;

В ЧАСОВА ЗОНА

Понякога трябва да преобразувате времевата марка в друга часова зона. Например, можете да съхранявате стойности на датите в UTC (универсален координатор на времето) и да конвертирате часовата зона според изискванията.

SELECT * FROM pg_timezone_names;

За да проверите текущата часова зона, използвайте SHOW TIMEZONE, както е показано по-долу.

Можете да изберете необходимата стойност на часовата зона от pg_timezone_names и да използвате AT TIME ZONE за получаване на изхода според определената часова зона.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/Chicago';

По същия начин можем да получим различни резултати за часови зони, използвайки AT TIME ZONE.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/New_York';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Asia/Qatar';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Europe/Istanbul';

Резюме

Типовете дати на Postgres са от съществено значение и са ценни при съхраняване на дата и времеви печати в почти всяка таблица на релационна база данни. Нуждаете се от тях за различни цели, като вмъкване на поръчка или при актуализиране на времеви печат, поръчки за покупки и продажби, подробности за събития, информация за клиенти и служители и др. Можете да използвате множество функции на Postgres, за да конвертирате тип дата в необходимата часова зона, формат и специфична информация, за да опростите извличането и анализа на вашите данни.


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

  2. Как SHOWPLAN_XML работи в SQL Server

  3. Разделете низ, разделен със запетая, и вмъкнете в таблица (int)

  4. Трябва ли да изберете типовете данни MONEY или DECIMAL(x,y) в SQL Server?

  5. Мониторинг на TempDB на SQL Server чрез използване на динамични изгледи за управление (DMV)