Проблем:
Искате да получите текущата дата (без часа) в Oracle.
Решение 1 (ако нямате нищо против нулите като времето):
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Например, ако трябва да изпълните тази заявка на 16 юни 2021 г., таблицата с резултатите ще изглежда така:
текуща_дата |
---|
2021-06-16T00:00:00Z |
Дискусия:
Oracle няма тип данни, който съхранява само датата без часа. Но ако нямате нищо против нулите на мястото на часа, можете просто да съхраните дата в DATE
тип данни (който съхранява както датата, така и часа в Oracle). За да получите текущата дата и час като DATE
стойност, можете просто да използвате CURRENT_DATE
. За да се отървете от часа (и вместо това да имате нули), трябва да съкратите датата:
SELECT TRUNC(CURRENT_DATE) AS current_date FROM dual;
Решение 2 (ако искате само датата, а не нули на мястото на часа):
SELECT TO_CHAR(CURRENT_DATE, 'yyyy-MM-dd') AS current_date FROM dual;
Например, ако трябва да изпълните тази заявка на 16 юни 2021 г., таблицата с резултатите ще изглежда така:
текуща_дата |
---|
16.06.2021 |
Дискусия:
За да получите текст на VARCHAR2
тип, който съхранява дата, можете да използвате TO_CHAR()
функция в Oracle. Трябва да посочите датата/часа, който да се преобразува като първи аргумент и във формата, в който искате да съхраните датата като втори аргумент.
Тъй като искате текущата дата, първият аргумент е CURRENT_DATE
. Вторият аргумент е вашият избор. Например, 'yyyy-MM-dd'
означава „година-месец-ден“, където месецът е числов, а не текстов. Таблицата по-долу представя някои примерни формати за дати и съответния изход за датата 16 юни 2021 г.
формат на датата | резултат |
---|---|
'ГГГГ-ММ-ДД' | 16.06.2021 |
„ГГГГ/ММ/ДД“ | 2021/06/16 |
'ГГГГ ММ ДД' | 2021 06 16 |
'ДД-ПОН-ГГГГ' | 16 ЮНИ 2021 г. |
'ДД-ПОН-ГГ' | 16-ЮНИ-21 |
'FMM месец ДД, ГГГГ' | 16 юни 2021 г. |
Можете да прочетете повече за форматите на датите тук.