Вы смешиваете две вещи здесь:
Первое преобразование типа данных строки в Oracle VARCHAR2
в тип DATE
данных. Тип данных DATE
имеет точность секунд, вы не можете это изменить. Тип DATE
данные всегда будут давать вам дату и время компонент, то есть год, месяц, день, часы, минуты и секунды: Oracle SQL Data Type Documentation
Однако вторая часть того, что вы спрашиваете о том, как отформатировать дату, когда извлекаться. Это полезно при запуске отчетов или других видов визуального отображения дат. Например, в США вы, скорее всего, хотите, чтобы ваши столбцы даты отображались в формате MM/DD/YYYY
, а во всем мире в мире вы, скорее всего, захотите придерживаться DD/MM/YYYY
. Oracle позволяет это сделать, сообщив, что вы используете NLS_DATE_FORMAT
. Вы можете установить этот параметр для каждого отдельного сеанса, а также на уровне базы данных, вам решать (и ваш администратор базы данных) решать, где и когда вы хотите установить это. В вашем случае вы можете применить это с помощью команды ALTER SESSION
:
SQL> ALTER SESSION SET nls_date_format='YYYY-MM-DD';
Session altered.
SQL> SELECT TO_DATE('2016-08-15 10:45:30', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
TO_DATE(
----------
2016-08-15
SQL> SELECT TO_DATE('20160815104530', 'YYYYMMDDHH24MISS') FROM DUAL;
TO_DATE(
----------
2016-08-15
Вы хотите сохранить временные порты? Потому что тип DATE Oracle поддерживает дату + время. – sstan
Я также должен упомянуть, что сообщения, с которыми вы связаны, не предназначены для Oracle. Вы не можете рассчитывать найти полезную для Oracle информацию в сообщениях для SQL Server или Excel. И почему бы не пойти в источник так или иначе? [Официальная документация TO_DATE] (https://docs.oracle.com/database/121/SQLRF/functions219.htm#SQLRF06132) – sstan
Я просто хочу получить дату, нет необходимости в дополнительных полях времени – triffic