mysql是datetime类型,java是String类型,jsp页面上显示多了个“.0”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql是datetime类型,java是String类型,jsp页面上显示多了个“.0”相关的知识,希望对你有一定的参考价值。

找了好久,网上都是千篇一律的copy,说是下面的处理方式:
使用<s:date>标签,有一个format属性,就是用来输出指定时间格式的
例如:<s:date name="publishTime" format="yyyy-MM-dd HH:mm:ss" />
<s:date name="birthday" format="yyyy-MM-dd" />
yyyy-MM-dd年月日 HH:mm:ss时分秒
但要注意两个细微的地方,很多人都倒在这上面:
1、"yyyy-MM-dd”中的“MM”一定要大写,不然会不起作用或者时间显示不正常
因为在java中,大M表示“月(Month)",而小m表示"分"(minute)
2、注意的是后面的"HH"表示24小时制,而如果是"hh",则显示时为12小时制
楼主可以自己验证下~~
还有一点:s:date标签使用时,一定要是Date类型。
如果是String型,数值型等其他类型,可以用以下方法:
先在resource文件中定义如下:
format.date_medium=0,date,medium
format.date_ymd=0,date,yyyy/MM/dd
format.date_time=0,date,yyyy/MM/dd hh:mm
然后就可以自由的format了:
<s:text name="format.date_ymd">
<s:param name="value" value="salesDate"/>
</s:text>

但是我研究了许久,发现salesDate后台也得是date类型,如果我传个String类型,会报错“Cannot format given Object as a Date”

大家有知道真正的解决方案吗?
我想要的是jsp页面通过标签处理,不是在后台查询处理

datetime类型的数据在数据库存储的时候是精确到毫秒的,因为你在存取的时候只精确到额秒,所以数据库默认的给添加了一个.0。所以你在后台取出时是带.0的。如果你要在页面上也看到精确到分的,那你在后台截取字符串然后在传到前台就好了 参考技术A 给你一个简单粗暴的办法 subSring 我也遇到过 起先没注意后来发现会有一个.0 如果找到办法记得告诉我下
后台 str.substring(0, 10)
在jsp页面 <%获取
然后substring
%>
但是这样你传值的时候就要用String 在页面接收也用String 如果非得用时间 那只能在jsp页面格式化 但是我个人觉得比较麻烦 建议使用String
参考技术B public void add(Emp emp)
getconn();
String sql="insert into emp (empno,ename,job,mgr,hiredate,comm,sal,deptno)" +
"values(?,?,?,?,?,?,?,?)";
try
stmt=conn.prepareStatement(sql);
stmt.setInt(1,emp.getEmpno());
stmt.setString(2, emp.getEname());
stmt.setString(3, emp.getJob());
stmt.setString(4, emp.getMgr());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date1 = null;
try
date1 = sdf.parse(emp.getHiredatestr());
catch (ParseException e)
// TODO Auto-generated catch block
e.printStackTrace();

java.sql.Date date2=new java.sql.Date(date1.getTime());
stmt.setDate(5, date2);
stmt.setString(6, emp.getComm());
stmt.setString(7, emp.getSal());
stmt.setInt(8, emp.getDeptno());
stmt.executeUpdate();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();

closeall();


这是我前几天写的,把String类型转化为Date类型,用的是SimpleDateForma,
在为数据库表单建立实体类的时候,为Date 类型的hiredate,多增加了一个String类型的属性hiredatestr。
希望能对 你有用
参考技术C 自己重新格式化

~
~
~
~
参考技术D

在你的实体类,getDate()方法中加入以下代码就可以了啊!

date = date.substring(0,date.length()-2);

String str=“2011-11-11 22:22:22” 如何把str转换成datetime类型存入mysql中

要在JAVA中实现

mysql的datetime类型,其实就是string型。

PHP:
使用int strtotime ( string $time [, int $now ] )函数转换为整数time类型。
插入时mysql时使用string date ( string $format [, int $timestamp ] )函数。
date("Y-m-d H:i:s", strtotime(str));

C#:
如果需要计算,先转DateTime:
DateTime dt = Convert.ToDateTime(str);
再DateTime转string:
dt.tostring()
参考技术A 直接向里存就可以,这样的格式是正常的'2011-11-11 22:22:22'

PHP也可以这样
$str = strval('2011-11-11 22:22:22');
$str = strtotime($str);
$time = date('Y-m-d H:i:s',$str);
echo $time;
参考技术B 多数方法是转为整型存入数据库
显示时再转回日期时间
strtotime($str)将字符串转为整型
date('Y-m-d H:i:s',$str)将整型转回时间

以上仅仅是php的方法

以上是关于mysql是datetime类型,java是String类型,jsp页面上显示多了个“.0”的主要内容,如果未能解决你的问题,请参考以下文章

求助!!如何在java代码中,将日期插入mysql数据库(对应字段类型是datetime),用JDBC连接数据库。

java mysql datetime 是java 中啥类型

怎么样将java中的date类型插入到mysql的datetime

mysql是datetime类型,java是String类型,jsp页面上显示多了个“.0”

java怎么取出mysql中datetime类型数据字段

TypeError: 不支持的操作数类型 -: 'datetime.date' 和 'str'