从java在sqlite数据库中插入日期
我的前端是java,后端(数据库)是sqlite 当我从从java在sqlite数据库中插入日期,java,sqlite,Java,Sqlite,我的前端是java,后端(数据库)是sqlite 当我从JDateChooser中选择日期时,我希望像这样存储日期和时间: Saturday, January 17, 2015 3:44:12 PM 存储日期的正确方法是将其存储为时间戳对象。数据库中的TIMESTAMP列不是字符串,也没有格式 使用字符串设置日期/时间戳字段是不好的做法,因为可能存在歧义。JDBC允许您分别使用PreparedStatemet的setDate()和setTimestamp()将其直接设置为java.sql.Dat
JDateChooser
中选择日期时,我希望像这样存储日期和时间:
Saturday, January 17, 2015 3:44:12 PM
存储日期的正确方法是将其存储为
时间戳
对象。数据库中的TIMESTAMP
列不是字符串,也没有格式
使用字符串设置日期/时间戳字段是不好的做法,因为可能存在歧义。JDBC允许您分别使用PreparedStatemet
的setDate()
和setTimestamp()
将其直接设置为java.sql.Date
或java.sql.Timestamp
因此,您可以使用getDate()
从JDateChooser
获取日期,将其转换为毫秒,从中创建一个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
对其进行正确格式化。此时,并且仅在此时,您将日期
或时间戳
对象转换为字符串。您不使用格式存储日期。它不是一根弦。通常,它是一个内部实现,指示从给定的“零”日期起经过的时间。只有在需要显示时才对其进行格式化,而不是在存储时进行格式化。只需将日期存储为特定的格式化字符串,就会导致各种问题。格式为yyy-MM-DD HH:MM:SS
。阅读以了解更多信息。在将日期存储到数据库中之前,如何使用AM或AM将日期格式化为周、月、12小时时钟的名称PM@user3216114为了什么?MySQLsDateTime
format将不接受这一点。
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);
}