SQL-Ex blog
У бізнес-сценаріях, коли нам потрібно обчислити вік людини, стаж роботи співробітників, рік навчання у школі/вузі тощо, ми можемо використовувати функцію Age() для вирішення таких завдань. Базовий синтаксис функції:
select AGE (timestamp, timestamp);
Select AGE (timestamp);
У першому прикладі функція AGE() приймає два значення TIMESTAMP у форматі YYY-MM-DD. Другий аргумент віднімається з першого і результатом, що повертається, є інтервал.
У другій синтаксичній формі, коли передається лише один аргумент TIMESTAMP, він віднімається з поточної дати.
Ось кілька прикладів із результатами обчислень:
SELECT AGE('2021-01-01','2018-10-24');
SELECT AGE(timestamp '1989-03-09');
CURRENT_DATE
Функція CURRENT_DATE повертає поточну дату. Ця функція немає аргументу. Синтаксис:
SELECT CURRENT_DATE;
Функція CURRENT_DATE зазвичай використовується як стандартне значення для стовпця. Як приклад розглянемо наступний сценарій:
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_date DATE DEFAULT CURRENT_DATE
);
У цій таблиці значення стовпця 'registration_date' визначатиметься функцією CURRENT_DATE. Давайте вставимо запис до таблиці, щоб побачити, як це працює.
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
У цьому операторі ми задаємо лише значення стовпця student_name. Інші стовпці набувають значення за замовчуванням, одне з яких - поточна дата.
CURRENT_TIME
Функція CURRENT_TIME повертає поточний час разом із локальним часовим поясом. Функція має необов'язковий аргумент, який називається точністю. Синтаксис:
SELECT CURRENT_TIME;
Перша половина виводу становить час у 24-годинному форматі. Оскільки точність у аргументі не вказана, повертається шестизначне десяткове значення. +05:30 – це локальний часовий пояс Індії.
У другому прикладі як аргумент точності передається 2. Отже, значення на виході міститиме до 2-х десяткових знаків.
SELECT CURRENT_TIME(2);
Подібно до функції CURRENT_DATE, функція CURRENT_TIME також використовується для вставки значення за замовчуванням у стовпці, де потрібно відстежувати системний час під час запису. Розглянемо наступний приклад:
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_date DATE DEFAULT CURRENT_DATE,
registration_time TIME DEFAULT CURRENT_TIME
);
Тепер вставимо в таблицю запис:
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
У цьому операторі ми вказали значення для стовпця student_name. Інші стовпці набувають значення за замовчуванням при вставці запису.
CURRENT_TIMESTAMP
Функція CURRENT_TIMESTAMP повертає поточну дату та час, а також локальний часовий пояс. Оскільки ця функція поєднує дату та час, вона віддає перевагу у світі програмування порівняно з окремими функціями дати та часу. Функція має необов'язковий аргумент – точність. Синтаксис:
SELECT CURRENT_TIMESTAMP;
У цьому прикладі перша частина виводу містить дату у форматі YYYY-MM-DD, потім час у 24-годинному форматі і оскільки точність не вказана в аргументі функції, повертається 6-значне десяткове значення. +05:30 – локальний часовий пояс Індії.
У наступному прикладі вдається точність 2, тому у висновку присутні 2 десяткові знаки.
SELECT CURRENT_TIMESTAMP(2);
CURRENT_TIMESTAMP може використовуватися для вставки значення за замовчуванням у стовпці, де потрібно відстежувати час запису. Наступний приклад демонструє цей сценарій:
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Давайте вставимо запис до таблиці
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
В операторі вказано значення для стовпця student_name. Інші стовпці набувають значення за замовчуванням при вставці.
Видно, що стовпець registered_at отримав значення дати та часу, коли було виконано оператор.
Зворотні посилання
Немає зворотних посилань
Коментарі
Показувати коментарі Як список | Деревоподібною структурою
Автор не дозволив коментувати цей запис
SQL-Ex blog
У цій статті ми розглянемо функції роботи з датою і часом, що найчастіше використовуються в PostgreSQL: LOCALTIMESTAMP(), LOCALTIME(), TO_DATE(), TO_TIMESTAMP(). Якщо ви пропустили першу частину, почніть із неї.
LOCALTIMESTAMP()
Функція LOCALTIMESTAMP() повертає поточну дату та час без локального часового поясу. Функція може мати необов'язковий аргумент, який називається точністю. Базовий синтаксис:
SELECT LOCALTIMESTAMP;
Перша частина результату представляє дату, за якою слідує час у 24-годинному форматі. Оскільки точність не вказана, повертається шість десяткових знаків.
У цьому прикладі число 2 в аргументі задає точність, отже на виході буде 2 десяткові знаки.
SELECT LOCALTIMESTAMP(2);
У світі програмування функція LOCALTIMESTAMP часто використовується для вставки значень за замовчуванням у стовпці, які відстежують поточний час вставки записів, наприклад, у стовпчиках аудиту.
Давайте розглянемо такий приклад, щоб зрозуміти сценарій. У цій таблиці registration_datetime є стовпцем аудиту.
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_datetime TIMESTAMP DEFAULT LOCALTIMESTAMP
);
Тепер вставимо запис до цієї таблиці
INSERT INTO registration(student_name)
VALUES('James Watt');
Бачимо, що поряд з наданими даними користувача, стовпець аудиту також заповнився поточним значенням тимчасової мітки.
LOCALTIME()
Функція LOCALTIME() повертає поточний час без локального часового поясу. Функція приймає необов'язковий аргумент, який називається точністю. Базовий синтаксис:
Результат є час у 24-годинному форматі. Оскільки точність не вказувалась, виводиться 6 десяткових знаків.
У цьому прикладі як аргумент точності передається значення 2, тому виводиться 2 десяткові знаки.
Подібно до функції LOCALTIMESTAMP, функція LOCALTIME також часто використовується для вставки значень за замовчуванням у стовпці, які відстежують поточний час вставки записів - стовпці аудиту.
У наступному прикладі стовпці таблиці registration_date та registration_time є стовпцями аудиту.
CREATE TABLE registration(
student_id serial PRIMARY KEY,
student_name varchar(255) NOT NULL,
registration_date DATE DEFAULT CURRENT_DATE,
registration_time TIME DEFAULT LOCALTIME
);
Давайте вставимо тепер запис до таблиці:
INSERT INTO registration(student_name)
VALUES('Shivayan Mukherjee');
Бачимо, що стовпці аудиту заповнюються поточними датою та часом, поряд із наданими даними про користувача.
TO_DATE
Функція TO_DATE() допомагає перетворити рядок на дату і, можливо, є однією з найбільш важливих і широко використовуваних функцій дати/часу PostgreSQL у світі програмування. Функція TO_DATE() конвертує рядковий літерал на значення дати. Базовий синтаксис:
Функція TO_DATE() приймає два параметри. Перший параметр - це рядок, який потрібно конвертувати в дату. Другий параметр – формат дати. Функція TO_DATE() повертає значення дати.
Приклад 1:
У цьому прикладі вхідний рядок перетворюється на дату відповідно до вхідного формату 'YYYYMMDD', де YYYY - рік чотирма цифрами, MM - місяць двома цифрами і DD - день двома цифрами.
SELECT TO_DATE('20210910', 'YYYYMMDD');
Приклад 2:
Важливо зауважити, що вхідний текст повинен відповідати вказаному формату дати. Працюватиме наступний запит:
SELECT TO_DATE('10 Sep 2021', 'DD Mon YYYY');
Цей запит викликає помилку, т.к. місяць та рік у рядку не відповідають форматуванню.
SELECT TO_DATE('10 Sep 2021', 'DD YYYY Mon');
TO_TIMESTAMP()
Функція TO_TIMESTAMP() допомагає конвертувати рядок у тимчасову мітку. функція TO_TIMESTAMP() перетворює рядковий літерал на позначку часу на основі вказаного формату. Базовий синтаксис:
Функція TO_TIMESTAMP() приймає два параметри - рядок, який потрібно перетворити до мітки часу, та відповідний формат. Функція TO_TIMESTAMP() повертає тимчасову мітку з часовим поясом.
Приклад 1:
У цьому прикладі вхідний рядок перетворюється на дату відповідно до вхідного формату 'YYYY-MM-DD HH:MI:SS', де YYYY - рік, заданий чотирма цифрами, MM - місяць двома цифрами і DD - день двома цифрами з наступним форматом годинника , хвилин та секунд.
SELECT TO_TIMESTAMP(
'2021-09-10 11:30:20',
'YYYY-MM-DD HH:MI:SS'
);
Приклад 2: час у 24-годинному форматі
Вираз часу у першому прикладі підтримує 12-годинний формат часу. Для підтримки 24-годинного формату часу слід використовувати вираз 'HH24', як показано в цьому прикладі.
SELECT TO_TIMESTAMP(
'2021-09-10 21:30:20',
'YYYY-MM-DD HH24:MI:SS'
);
Зворотні посилання
Немає зворотних посилань
Коментарі
Показувати коментарі Як список | Деревоподібною структурою
Автор не дозволив коментувати цей запис