Используйте функцию to_date
с соответствующей моделью формата.
В вашем примере неясно, что представляет собой 1/4/2022
(это 1 апреля или 4 января), поэтому я попытался угадать это.
SQL> create table test (col date);
Table created.
SQL> insert into test (col) values (to_date('1/4/2022 12:00:00 AM', 'dd/mm/yyyy hh:mi:ss am'));
1 row created.
SQL>
Как получить это значение?
Один из вариантов — сделать так же, как при вставке данных, но на этот раз с функцией to_char
:
SQL> select to_char(col, 'dd/mm/yyyy hh:mi:ss am') result from test;
RESULT
----------------------
01/04/2022 12:00:00 AM
Другой вариант — изменить сеанс; то select * from test
возвращает желаемый результат:
SQL> alter session set nls_date_format = 'dd/mm/yyyy hh:mi:ss am';
Session altered.
SQL> select * from test;
COL
----------------------
01/04/2022 12:00:00 AM
SQL>
Дифференциация AM/PM: Oracle знает, что вы ввели:
SQL> insert into test (col) values (to_date('1/4/2022 2:30:00 PM', 'dd/mm/yyyy hh:mi:ss am'));
1 row created.
SQL> select * from test;
COL
----------------------
01/04/2022 12:00:00 AM
01/04/2022 02:30:00 PM
SQL>
Большое спасибо, Littlefoot, это вставка, это было 1 апреля. но в базе данных я получаю этот формат 01-APR-22, я не могу получить это «04.01.2022, 00:00:00»
Пожалуйста. Посмотрите отредактированный ответ, пожалуйста.
ок, спасибо, другой вопрос - это не способ определить, когда вы забираете утро или вечер
Oracle сам обнаруживает это; это зависит от того, что вы вставили. Посмотрите на другой пример, который я разместил.
очень хорошее объяснение, спасибо
Отвечает ли это на ваш вопрос? Как я могу использовать функцию To_date в оракуле с форматом даты?