2016-03-03 94 views
0

你好,我正在定义一个变量,我想要股票日期时间输入。
我给这个变量的格式是yyyy-mm-dd hh:MM。 但在数据库中它一直显示我只有这个格式yyyy-mm-dd没有hh:MM
代码Java日期时间查看

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-mm-dd hh:MM"); 
        java.util.Date date = sdf1.parse(rs.getString("dateMaint")); 
        java.sql.Date sqlStartDate = new Date(date.getTime()); 
        mc.setDateMaint(sqlStartDate); 
+0

小'M'代表分钟,同时'M'代表月...您必须在代码中切换它们 –

+1

另外,java.sql.Date没有时间部分。所以这并不奇怪。使用时间戳。当然,为数据库列选择适当的类型。 –

+0

非常感谢您的回复。你有什么建议使用Timestamp? – user3816341

回答

0
public static java.sql.Timestamp convertToSqlDateTime(Date utilDate){ 
     return new java.sql.Timestamp(utilDate.getTime()); 
} 

通常情况下,只有java.sql.Date返回一个日期,只值和时间将被丢弃。所以,为了节省时间,必须使用java.sql.TimeStamp

时间戳使用毫秒时间值构造一个Timestamp对象。积分秒存储在基础日期值中;小数秒存储在Timestamp对象的nanos字段中。

为此,utilDate.getTime()用于返回毫秒数,因为此日期对象表示January 1, 1970, 00:00:00 GMT

欲了解更多信息链接:Source

+0

java.sql.date确实可以处理高达毫秒的精度,请参阅:https://docs.oracle.com/javase/8/docs/api/java/sql/Date.html但是,您说的正确的是实施日期,时间,日期时间因数据库供应商而异。 –

+1

@GeeBee阅读javadoc:*要符合SQL DATE的定义,由java.sql.Date实例包装的毫秒值必须通过将小时,分钟,秒和毫秒设置为零来“标准化”与实例关联的时区*。 –

+0

Javadoc还说:* public void setTime(long date) 使用给定的毫秒** time **值设置一个现有的Date对象。如果给定的毫秒值包含**时间信息**,则驱动程序会将时间组件设置为与零GMT相对应的默认时区(运行应用程序的Java虚拟机的时区)中的时间。* –