java.sql.Timestamp日期格式化问题

Amazon 发布于 2015/06/26 13:08
阅读 2K+
收藏 0

@JFinal 你好,想跟你请教个问题:

,

这个java.sql.Timestamp 处理的时候是故意不兼容, 2015-06-24 这种格式的还是bug,谢谢。

加载中
0
JFinal
JFinal

    Timestamp 格式的数据要求是:年月日 时分秒,也即:yyyy-mm-dd hh:mm:ss,如果不是这种格式就无法转换,如果是 2015-06-24 这个是 Date 类型,对应mysql 的 datetime 类型,如果非要让 Date 格式的字符串转成 Timestamp,可以改下源码将 else if(class== java.sql.Timestamp.class) 这个分支的代码改成下面:

else if (clazz == java.sql.Timestamp.class) {
  if (s.length() >= timeStampLen) {
     result = java.sql.Timestamp.valueOf(s);
  }
  else {
    result = new java.sql.Date(new SimpleDateFormat(datePattern).parse(s).getTime());
    result = new java.sql.Timestamp(((java.sql.Date)result).getTime());
  }
}
   也即在转换时会先判断一下字符串的长度,如果不够长就转成 Date 的形式先, jfinal 2.1 考虑引入此功能。
JFinal
JFinal
回复 @Amazon : 我这用得好好的呢,调试一下,应该没问题的
Amazon
Amazon
回复 @JFinal : 使用maven构建的,<version>1.9</version>
Amazon
Amazon
bulidingdate=class java.sql.Timestamp, updated=class java.sql.Timestamp,,这两个字段都已经改成datettime类型了。重启了而且。。
Amazon
Amazon
回复 @JFinal : 貌似改成datetime也不行,还是按照Timestamp来解析的。。
JFinal
JFinal
回复 @Amazon : 如果只存年月日时分秒,不存毫秒信息,datetime挺好的,timestamp 精确到秒以后,一般用不着
下一页
0
Amazon
Amazon

调试了一下。

com.mysql.jdbc.Field@478b717c[catalog=iot,tableName=iot_building,originalTableName=iot_building,columnName=bulidingDate,originalColumnName=bulidingDate,mysqlType=12(FIELD_TYPE_DATETIME),flags= BINARY, charsetIndex=63, charsetName=US-ASCII]

这里获取的是,FIELD_TYPE_DATETIME类型,

跟驱动有没有关系。我的mysql版本是,<version>5.1.20</version>

@JFinal.

Amazon
Amazon
回复 @JFinal : 我的意思是我在数据是datetime类型,不是不应该按照timestamp这种方式么。
JFinal
JFinal
对,我在前面的回复就是这么说的
Amazon
Amazon
回复 @JFinal : 这个地方如果是java.sql.Timestamp的话,后面传入日期的日期,就会把 2015-06-12 这种日期解析按照timestamp这种方式解析,就会报错。。。
JFinal
JFinal
弹出窗中提示的类型浊 java.sql.Timestamp 么? 没啥问题吧
返回顶部
顶部