Ошибка сохранения даты в произвольном формате с использованием to_date

Цель:

  1. Я хочу сохранить дату в базе данных в dd/MM/yyyy формат.

  2. Я сначала отформатировал его, используя DateFormat что приводит к изменению его на String тип данных, а затем пытается преобразовать обратно в дату тип данных с помощью to_date функция, но она сохраняется в виде 19-DEC-12 т.е. dd-MON-yy формат.

Код:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
java.util.Date dob=JDateChooser.getDate();  
java.sql.Date dobloc=new java.sql.Date(dob.getTime()); 
String dobloc1=df.format(dobloc);   
String sql="INSERT INTO ADMIN.DEPARTMENT(date_of_birth) VALUES (to_date(?,'dd/MM/yyyy'))"
PreparedStatement pst = conn.prepareStatement(sql);  
pst.setString(1, dobloc1);          

2 ответа

Даты не сохраняются в формате, который вы указали в какой-либо базе данных (если вы не используете строковое поле). Большинство систем баз данных хранят значения даты и времени как "двойные" значения.

Вы должны поместить дату в базу данных и беспокоиться о форматировании, когда вы получаете данные из БД или представляете их пользователю.

Я думаю, вы неправильно понимаете, как на самом деле работает дата в Oracle.
Дата не сохраняется как "19-DEC-12" или "19/12/2012", она хранится как 7 байтов.

Смотрите здесь для более подробной информации.

Если вы выбираете столбец даты, он форматируется с помощью NLS_DATE_FORMAT. Это маска по умолчанию, используемая для форматирования этих 7 байтов.

Конечно, если вы используете маску нестандартного формата, такую ​​как to_char(sysdate,'YYYY MM DD') NLS_DATE_FORMAT по умолчанию игнорируется.

Как я читаю в комментариях выше

На самом деле я пытаюсь сохранить в правильном формате, потому что я отображаю чистую копию моей таблицы базы данных на некоторых других формах, используя JTable, поэтому форматирование даты, в которой хранится дата, отображается непосредственно. Я не хочу конвертировать формат даты в моем большом количестве Jtables, что может заставить меня менять формат даты снова и снова, так как мои таблицы продолжают увеличиваться

Я предлагаю вам также сохранить специальную маску форматирования, используемую для форматирования дат, в другом столбце вашей БД-таблицы. Перед отображением даты в JTable отформатируйте ее с помощью этой маски, используя DateFormat,

Другие вопросы по тегам