java日期格式SQL
我有一个名为Abbonamento的表,它具有以下属性:
Abbonamento(idAbbonamento, tipo, DataInizio, DataScadenza, ....)
Datanizio和DataScadenza属于DATE
类型。
当我在此表上进行选择时,问题就出现了:
String queryAbb = "select idabbonamento, tipo, DATE_FORMAT(datainizio,'%d-%m-%Y'), DATE_FORMAT(datascadenza,'%d-%m-%Y'), ...;
prest = con.prepareStatement(queryAbb);
rs = prest.executeQuery();
while (rs.next()) {
a=new Abbonamento();
a.setIdAbbonamento(rs.getInt(1));
a.setTipo(rs.getString(2));
a.setDataInizio(rs.getDate(3));
System.out.println(rs.getDate(3));
a.setDataScadenza(rs.getDate(4));
...
}
现在,如果数据库中的日期数据化是例如2013-11-05 00:00:00
,我希望有05-11-2013
,但是println打印0004-10-13
上面的代码有什么问题
# 1 楼答案
而不是
你应该使用
因为数据已经格式化为字符串。如果您想获得
Date
,首先,从05-11-2013
字符串创建一个日期对象,然后您将收到该对象如果对象中有
Date
个对象,则应该使用与从DB返回的格式相同的返回字符串,或者让JDBC为您进行转换(在本例中,只需select idabbonamento, tipo, datainizio, ...
),而不进行格式化我建议让JDBC来做。更少的用户代码,更少的麻烦:)
实际上,还有一个技巧,但您不必关心:
rs.getDate()
返回java.sql.Date
,但您可能使用java.util.Date
。这不是问题,因为java。sql。Date是java的一个子类。util。日期,因此此作业完全有效# 2 楼答案
以独立于数据库的方式,可以使用^{} 。例如:
# 3 楼答案
试试这个: