用Java和SQL绘制日期

用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

您好,我在从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")+"</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
现在已被类取代。请参阅。