【求救】一个Timestamp 类型转换问题 送分 在线等

vonreynard 2013-10-02 08:17:34
在同一个JSP页面内

通过
  <td>起始交单时间</td>
</tr>
<tr>
<td>
<input type="text" name="f_mint" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="Wdate" value="1900-01-01 00:00:00">
</td>
</tr>
<tr>
<td>结束交单时间</td>
</tr>
<tr>
<td><input type="text" name="f_maxt" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" class="Wdate" value="1900-01-01 00:00:00"></td>


取得一个起始时间和结束时间,在数据库内进行搜索

在同一页面内,使用

f_mint_s=  codeToString(request.getParameter("f_mint"));
// String f_maxt_s= "1900-01-01 00:00:00";
f_maxt_s= codeToString(request.getParameter("f_maxt"));


获得两个输入框的值,codeToString 是不同编码转换防止乱码的函数

然后因为要进行判断

if (!"".equals(f_mint) && !"".equals(f_maxt)) 
{
sqlAS.append(" and f_apptime between '"+f_mint+"' and '"+f_maxt+"'");
}
else if (!"".equals(f_mint) && "".equals(f_maxt)) {
sqlAS.append(" and f_apptime > '" +f_mint+ "'");
}
else if ("".equals(f_mint) && !"".equals(f_maxt)) {
sqlAS.append(" and f_apptime <'" +f_maxt+ "'");
}

进行SQL语句的凭借,在SQL内无法自动识别时间格式,是故在判断插入前需要加入Timestamp的转换

从网上找了些例子
发现

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

f_mint_s = df.format(new java.util.Date());

Timestamp f_mint = Timestamp.valueOf(f_mint_s);

这样的String转换编译没有问题,但,取值不对,永恒取向是当前系统时间

而在页面不重启的前提下,去掉以上第一第二句,直接使用Timestamp f_mint = Timestamp.valueOf(f_mint_s);转换没有问题,

如果页面重启后则直接提示出错


java.lang.IllegalArgumentException: null string
java.sql.Timestamp.valueOf(Unknown Source)

请问有什么办法解决么,头疼了一天了,求高手解救
...全文
280 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vonreynard 2013-10-03
  • 打赏
  • 举报
回复
引用 2 楼 pei7932658 的回复:
在吗,首先你前台选择两个值能传到后台里去吗,至于格式好说 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 你用的这个就可以转,非常好用,然后传时间不需要转码吧,一般不会乱码得,不像中文 你说的一直取到系统当前时间是什么意思 我只看到你这个地方一直是New系统当前时间,而format得不是你传过来的值,如果是这样,你肯定只能取到当前时间得 f_mint_s = df.format(new java.util.Date()); Timestamp f_mint = Timestamp.valueOf(f_mint_s);
问题解决了,是因为每次初始化页面所有输入语句都是显示NULL值,只要在取值语句后面加个判断NULL就把他置空就好了
pei7932658 2013-10-03
  • 打赏
  • 举报
回复
在吗,首先你前台选择两个值能传到后台里去吗,至于格式好说 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 你用的这个就可以转,非常好用,然后传时间不需要转码吧,一般不会乱码得,不像中文 你说的一直取到系统当前时间是什么意思 我只看到你这个地方一直是New系统当前时间,而format得不是你传过来的值,如果是这样,你肯定只能取到当前时间得 f_mint_s = df.format(new java.util.Date()); Timestamp f_mint = Timestamp.valueOf(f_mint_s);
vonreynard 2013-10-02
  • 打赏
  • 举报
回复
另外 论坛搜索废掉了么,什么都搜不到

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧