用Java和SQL绘制日期
您好,我在从access数据库绘制短日期列(“FECHA”)时遇到一些问题。这是我在绘制时的代码:用Java和SQL绘制日期,java,sql,eclipse,date,Java,Sql,Eclipse,Date,您好,我在从access数据库绘制短日期列(“FECHA”)时遇到一些问题。这是我在绘制时的代码: ResultSet rs2=statement.executeQuery("SELECT * FROM CITAS WHERE PACIENTE Like '"+user+"' "); if(rs2.next()){ toClient1.println("<p>Su cita es: "+rs2.getString("FECHA")+" "+rs2.getString("HORA
ResultSet rs2=statement.executeQuery("SELECT * FROM CITAS WHERE PACIENTE Like '"+user+"' ");
if(rs2.next()){
toClient1.println("<p>Su cita es: "+rs2.getString("FECHA")+" "+rs2.getString("HORA")+"</p>");
ResultSet rs2=statement.executeQuery(“从CITAS中选择*,其中PACIENTE类似于“+user+””);
if(rs2.next()){
toClient1.println(“Su-cita es:”+rs2.getString(“FECHA”)+”+rs2.getString(“HORA”)+“”);
当我这样做时,我得到的结果是:
2017-05-22 00:00:00.0000009
如何摆脱所有这些0?使用
SimpleDateFormat
在java中格式化日期
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
df.format(rs.getDate("FECHA"));
使用
SimpleDataFormat
在java中格式化日期
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
df.format(rs.getDate("FECHA"));
首先,您应该检查Access数据库是否同时具有日期(fecha)和时间(hora)的数据类型,这样它就不必是表中两个单独的字段 接下来,您应该检查您是否拥有或能够获得一个足够新的JDBC驱动程序,它可以使用较新的
java.time
类从结果集中获取这样一个对象。我还没有经验告诉您应该使用哪种类型,但一旦您发现,它应该比您拥有的字符串和Nitin Prabhu在中建议的日期
对象更容易使用
最后,如果一切顺利,请使用一个或两个
DateTimeFormatter
将数据库中的对象格式化为用户想要的格式。例如,您可以使用获取yyyy-MM-dd
首先,您应该检查Access数据库是否同时具有日期(fecha)和时间(hora)的数据类型因此,表中不必有两个单独的字段
接下来,您应该检查您是否拥有或能够获得一个足够新的JDBC驱动程序,它可以使用较新的java.time
类从结果集中获取这样一个对象。我还没有经验告诉您应该使用哪种类型,但一旦您发现,它应该比您拥有的字符串和Nitin Prabhu在中建议的日期
对象更容易使用
最后,如果一切顺利,请使用一个或两个DateTimeFormatter
将数据库中的对象格式化为用户想要的格式。例如,您可以使用来获取yyyy-MM-dd
tl;dr
……或者
myResultSet.getObject( "FECHA" , LocalDate.class )
String::substring
提取所需的字符。Call。令人烦恼的是,该方法的参数是从零开始的索引号
String output = "2017-05-22 00:00:00.000000 9".substring( 0 , 10 ) ;
2017-05-22
看这个
使用对象,而不是字符串
与数据库交换数据时,应使用对象而不仅仅是字符串。对于日期时间值,应使用从日期时间类实例化的日期时间对象
您不需要在此处记录表的性质。如果FECHA
是仅日期类型,并且您的支持,则可以直接使用java.time类型。请参阅
LocalDate ld = myResultSet.getObject( "FECHA" , LocalDate.class ) ;
太长,读不下去了
……或者
myResultSet.getObject( "FECHA" , LocalDate.class )
String::substring
提取所需的字符。Call。令人烦恼的是,该方法的参数是从零开始的索引号
String output = "2017-05-22 00:00:00.000000 9".substring( 0 , 10 ) ;
2017-05-22
看这个
使用对象,而不是字符串
与数据库交换数据时,应使用对象而不仅仅是字符串。对于日期时间值,应使用从日期时间类实例化的日期时间对象
您不需要在此处记录表的性质。如果FECHA
是仅日期类型,并且您的支持,则可以直接使用java.time类型。请参阅
LocalDate ld = myResultSet.getObject( "FECHA" , LocalDate.class ) ;
您希望得到什么?您是否尝试使用getDate来代替?仅限2017-05-22?请编辑您问题的标题以描述核心问题。您希望得到什么?您是否尝试使用getDate来代替?仅限2017-05-22?请编辑您问题的标题以描述核心问题。您的意思是
yyyy-MM-dd
:)df将是日期对象还是String?df是SimpleDataFormat instanceFYI,麻烦的旧日期时间类,如和java.text.SimpleTextFormat
,现在被这些类取代。请参阅。您的意思是yyyyy-MM-dd
:)df将是日期对象或字符串吗?df是SimpleDataFormat instanceFYI,麻烦的旧日期时间类,如和java、 text.SimpleTextFormat
现在已被类取代。请参阅。