На додаток до цих функцій підтримується SQL-оператор OVERLAPS.
Його результатом буде true, коли два періоди часу (певні своїми кордонами) перетинаються, і false у противному випадку. Межі періоду можна задати або у вигляді пари дат, часу або дат згодом, або як дату, час (або дату з часом) c інтервалом. Коли вказується пара значень, першим може бути і початок, і кінець періоду: OVERLAPS автоматично вважає початком періоду менше значення. Періоди часу вважаються наполовину відкритими, т. Е. Початок<=время<конец . если только начало и конец не равны — в этом случае период представляет один момент времени. Это означает, например, что два периода, имеющие только общую границу, не будут считаться пересекающимися.
Віднімання дат і дат згодом також може бути нетривіальною операцією. Один принципово простий спосіб виконати таке обчислення - перетворити кожне значення в кількість секунд, використовуючи EXTRACT (EPOCH FROM.). а потім знайти різницю результатів; при цьому буде отримано число секунд між двома датами. При цьому буде враховано неоднакове число днів в місяцях, зміни часових поясів і переходи на літній час. При відніманні дат дат згодом за допомогою оператора "-" видається число днів (по 24 години) і годин / хвилин / секунд між даними значеннями, з урахуванням тих же чинників. Функція age повертає число років, місяців, днів і годин / хвилин / секунд, виконуючи віднімання по полях, а потім перераховуючи негативні значення. Різниця цих підходів ілюструють такі запити. Показані результати були отримані для часового поясу 'US / Eastern'; між двома заданими датами стався перехід на літній час:
Функція extract отримує з значень дати / часу поля, такі як рік або годину. Тут джерело - значення типу timestamp. time або interval. (Вирази типу date приводяться до типу timestamp. Так що допускається і цей тип.) Зазначене поле являє собою ідентифікатор, за яким з джерела вибирається заданий поле. Функція extract повертає значення типу double precision. Допустимі поля:
Для значень timestamp це день місяця (1 - 31), для значень interval - число днів decade
Рік, поділеній на 10 dow
День тижня, рахуючи з неділі (0) до суботи (6)
Зауважте, що в extract дні тижня нумеруються не так, як у функції to_char (. 'D'). doy
День року (1 - 365/366) epoch
Для значень timestamp with time zone це число секунд з 1970-01-01 00:00:00 UTC (може бути негативним); для значень date і timestamp це число секунд з 1970-01-01 00:00:00 за місцевим часом, а для interval - загальна тривалість інтервалу в секундах
Перетворити час доби назад, в значення дата / час можна так:
(Це перетворення здійснює функція to_timestamp.) Hour
Час (0 - 23) isodow
День тижня, рахуючи з понеділка (1) до неділі (7)
Результат відрізняється від dow тільки для неділі. Така нумерація відповідає ISO 8601. isoyear
Рік по тижневому календарем ISO 8601, в який потрапляє дата (не застосовується до інтервалів)
Цього поля не було в PostgreSQL до версії 8.3. microseconds
Значення секунд з дробової частиною, помножене на 1 000 000; зауважте, що воно включає і цілі секунди millennium
Значення секунд з дробової частиною, помножене на 1 000; зауважте, що воно включає і цілі секунди. minute
Хвилини (0 - 59) month
Для значень timestamp це номер місяця в році (1 - 12), а для interval - залишок від ділення числа місяців на 12 (в інтервалі 0 - 11) quarter
Квартал року (1 - 4), до якого належить дата second
Секунди, включаючи дробову частину (0 - 59 [1]) timezone
Зсув годинного пояса від UTC, представлене в секундах. Позитивні значення відповідають часові пояси на схід від UTC, а негативні - на захід. (Висловлюючись технічно точно, Postgres Pro використовує UT1. Так як секунди координації не враховуються.) Timezone_hour
Поле годин в зміщенні часового поясу timezone_minute
Поле хвилин в зміщенні часового поясу week
Поле року. Врахуйте, що року 0 не було, і це слід мати на увазі, віднімаючи з років нашої ери роки до нашої ери.
Функція extract в основному призначена для обчислювальних цілей. Функції форматування дати / часу описані в Розділі 9.8.
Функція date_part емулює традиційний для Ingres еквівалент стандартної SQL-функції extract.
Зауважте, що тут параметр поле повинен бути строковим значенням, а не ім'ям. Функція date_part сприймає ті ж поля, що і extract.
Функція date_trunc працює подібно trunc для чисел.
Тут значення - це вираз типу timestamp або interval. (Значення типів date і time автоматично приводяться до типам timestamp і interval. Відповідно.) Параметр поле визначає, до якої точності обрізати передане значення. Значення, що повертається матиме тип timestamp або interval і все його значення, менш значущі, ніж заданий поле, будуть дорівнюють нулю (або одиниці, якщо це номер дня чи місяця).
Параметр поле може набувати таких значень: