目的:
我想以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);
答案 0 :(得分:2)
日期不保留您在任何数据库中指定的格式(除非您使用字符串字段)大多数数据库系统将日期时间值存储为“双”值。
您应该将日期放入数据库,并在从数据库获取数据或将数据呈现给用户时担心格式化。
答案 1 :(得分:1)
我认为你误解了日期在Oracle中的实际运作方式 日期不像“19-DEC-12”或“19/12/2012”那样存储,它存储为7个字节。
有关详细信息,请参阅here。
如果选择日期列,则使用NLS_DATE_FORMAT格式化。 这是用于格式化这7个字节的默认掩码。
当然,如果您使用自定义格式掩码,例如to_char(sysdate,'YYYY MM DD')
,则会忽略默认的NLS_DATE_FORMAT。
正如我在上述评论中所读到的那样
实际上我正在尝试以正确的格式存储,因为我正在使用JTable在其他一些表单上显示我的数据库表的纯副本,因此存储日期的日期格式会直接显示。我不想在我的大量Jtables上转换日期格式,这可能会让我一次又一次地更改日期格式,因为我的表格不断增加
我建议你还保存用于格式化DB-Table中另一列中日期的特定格式掩码。
在JTable中显示日期之前,请使用DateFormat
。