jfinal postgres 时间 日期 格式 timestamp

渔泯小镇 发布于 2013/05/17 00:17
阅读 3K+
收藏 0

postgres 的一个字段是 timestamp 类型 我插入语句是 insert ... (current_timestamp) 

期望的数据格式是 2013-02-14 08:30

但数据却是 2013-02-14 23:52:59.151

请教各位 如何设置类型才能得到期望的时间格式

---------------------------------------------------------

jfinal :

字段类型是 timestamp 但是我页面输入的值是 2013-02-14 08:31

调用 getModel(class) 会报错. 

com.jfinal.core.ModelInjectException: Can not convert parameter: o.birthday

postgres字段设置timestamp 类型 会对应 class java.sql.Timestamp

但是java API

public static Timestamp valueOf(String s)

参数: 

    s- 使用yyyy-mm-dd hh🇲🇲ss.fffffffff格式的时间戳

返回: 

    相应的Timestamp值

抛出:

    IllegalArgumentException- 如果给定的参数不具有yyyy-mm-dd hh🇲🇲ss.fffffffff格式


请教如何解决啊。

----------------------------------------------------------------------------

最后我全程的期望是

postgres 数据库 时间日期的格式 2013-02-14 08:30 ~ 该使用什么类型 

页面输入的 2013-02-14 08:31 ~ 调用getModel 方法不会报错.


加载中
1
渔泯小镇
渔泯小镇

感谢大家积极回答!

目前的解决办法

数据库类型

设置 timestamp 类型的 length=0

页面输入 2013-02-14 08:20 改成输入 2013-02-14 08:20:00

就可以使用getModel() 方法了.


postgres 什么时间类型 才没有 .小数秒(毫微秒)

    


渔泯小镇
渔泯小镇
哈哈 我说的输入其实就是一个日期控件 选择日期,因为需要给用户修改日期。 下面是sql: CREATE TABLE "public"."tb_aaa" ( ID SERIAL not null PRIMARY KEY, birthday timestamp(0) )
JFinal
JFinal
其实一般来说timestamp这类数据一般是数据库直接生成或者java代码生成,而非前端表单输入
mark35
mark35
修改数据库字段定义为timestmp(0)就只显示并精确到秒
0
JFinal
JFinal
    想快速解决问题,改一下 com.jfinal.core. TypeConverter.java 文件中第 28 行,改成你想要的格式即可,jfinal 考虑将来可以设置这个参数
0
本人纯属虚构
本人纯属虚构

timestamp 本来默认格式就是 yyyy-mm-dd hh:mm:ss.fff

timestamp(0) without time zone 不会显示毫秒

至于你不想显示秒 看postgreSQL的api

0
戴威
戴威

引用来自“JFinal”的答案

    想快速解决问题,改一下 com.jfinal.core. TypeConverter.java 文件中第 28 行,改成你想要的格式即可,jfinal 考虑将来可以设置这个参数

参考 commons-lang 的 DateUtils.parseDate(String str, String[] parsePatterns)  来做吧。

可以全局设置几个patterns。


0
pandyyan
pandyyan

引用来自“JFinal”的答案

    想快速解决问题,改一下 com.jfinal.core. TypeConverter.java 文件中第 28 行,改成你想要的格式即可,jfinal 考虑将来可以设置这个参数
改com.jfinal.core.TypeConverter.java 文件中第 28 行貌似不可行哟,LZ注入的是 timestamp 类型,对应的是TypeConverter.java
else if (clazz == java.sql.Timestamp.class) {
     result = java.sql.Timestamp.valueOf(s);
}
建议对于 timestamp 类型字段先不使用getModel(),而是使用getPara()再set到Model对象。
0
mark35
mark35

引用来自“本人纯属虚构”的答案

timestamp 本来默认格式就是 yyyy-mm-dd hh:mm:ss.fff

timestamp(0) without time zone 不会显示毫秒

至于你不想显示秒 看postgreSQL的api

+1

timestmp默认是应该是timestmp(6)精确到微妙


0
紫气东来n
@pandyyan 正解,自定义格式,表单中不要modelName,用getPara()方式获取再转换
返回顶部
顶部