我的前端是java,后端(数据库)是sqlite。
当我从JDateChooser
选择日期时,我想像这样存储日期和时间:
Saturday, January 17, 2015 3:44:12 PM
那我该怎么做?
我不知道我应该在dateFormatString
的{{1}}属性中写出什么价值,以便获得上述格式化的日期和时间。
表格中有四列。一列名称为“Date”,其数据类型为jDateChooser
。
在此列中,我想存储格式化的日期和时间。
对于日期和时间插入,我编写了以下代码:
DATETIME
答案 0 :(得分:2)
存储日期的正确方法是将其存储为Timestamp
对象。数据库中的TIMESTAMP
列不是字符串,并且它没有格式。
使用字符串设置日期/时间戳字段是不好的做法,因为可能存在歧义。 JDBC允许您分别使用java.sql.Date
java.sql.Timestamp
和PreparedStatemet
将其设置为setDate()
或setTimestamp()
。
因此,您使用JDateChooser
从getDate()
获取日期,将其转换为毫秒,从中创建Timestamp
对象,然后使用setTimestamp
进行设置。
try
{ String sql = "insert into tbexpense (`No.`, Subject_expense, Cost, Date) values (?, ?, ?, ?)";
pst = conn.prepareStatement(sql);
pst.setString(1, txtNo.getText());
pst.setString(2, txtexpense.getText());
pst.setString(3, txtcost.getText());
pst.setTimestamp(4, new java.sql.Timestamp(jDateChooser1.getDate().getTime()) );
pst.execute();
JOptionPane.showMessageDialog(null, "Saved.");
Update_table();
}
catch(Exception e)
{ JOptionPane.showMessageDialog(null, e);
}
当您需要显示已存储在数据库中的日期时,您可以使用DateFormatter
正确格式化它。此时,仅在此时,您将Date
或Timestamp
对象转换为字符串。