1

目标:

  1. 我想以dd/MM/yyyy格式将日期存储在数据库中。

  2. 我首先使用DateFormat它对其进行格式化,从而将其更改为String数据类型,然后尝试使用函数将其转换回日期数据类型,to_date但它以19-DEC-12iedd-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);          
4

2 回答 2

2

日期不会以您在任何数据库中指定的格式保存(除非您使用字符串字段) 大多数数据库系统将日期时间值存储为“双精度”值。

当您从数据库获取数据或将其呈现给用户时,您应该将日期放入数据库并担心格式化。

于 2012-12-28T15:33:40.020 回答
1

我认为您误解了日期在 Oracle 中的实际工作方式。
日期不像“19-DEC-12”或“19/12/2012”那样存储,它存储为 7 个字节。

有关详细信息,请参见此处

如果选择日期列,则使用 NLS_DATE_FORMAT 对其进行格式化。这是用于格式化这些 7 字节的默认掩码。

当然,如果您使用自定义格式掩码,如to_char(sysdate,'YYYY MM DD')默认 NLS_DATE_FORMAT 将被忽略。

正如我在上面的评论中所读到的

实际上,我正在尝试以正确的格式存储,因为我正在使用 JTable 在其他一些表单上显示我的数据库表的纯副本,以便直接显示存储日期的日期格式。我不想在我的大量 Jtables 上转换日期格式,这可能会让我随着我的表格不断增加而一次又一次地更改日期格式

我建议您还将用于格式化日期的特定格式掩码保存在 DB-Table 的另一列中。在 JTable 中显示您的日期之前,您可以使用此掩码对其进行格式化DateFormat

于 2012-12-28T15:45:23.390 回答