Ошибка сохранения даты в произвольном формате с использованием to_date
Цель:
Я хочу сохранить дату в базе данных в
dd/MM/yyyy
формат.Я сначала отформатировал его, используя
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
,