String类型转换成java.sql.Date存入数据库

在使用struts处理时间问题的时候,可以使用<sx:datetimepicker >标签

<sx:datetimepicker name="date" label="Order Date" displayFormat="yy-MM-dd" type="date"/>
    <!--lable为输入框的标签,也就是显示在输入框前边的字-->
    <!--name对应action中的变量,可以为String或Date-->
    <!--displayFormat输入框里日期的显示格式,支持的字母表示在下边-->
    <!--type显示的类型,有两个date和time,分别对应日期和时间-->
    <sx:datetimepicker value="%{date}"/>
    <sx:datetimepicker value="%{'2007-01-01'}"/>
    <sx:datetimepicker value="%{'today'}"/>
    <!--value表示输入框里的显示默认值,可以为变量,也可以为具体的日期。today则表示今天的日期-->
显示格式支持的字母表示
d 相对于每个月的天数
D 相对于每年的天数
M 经我试验,MM显示数字例如'09',MMM显示汉字例如'一月',但是有乱码,不知道是什么原因
y 年
h 12小时制的小时
H 24小时制的小时
m 分钟
s 秒


可以指定type=date,这样的话就好解决了。

这里,我只是 约束displayFormat="yyyy-MM-dd"

年龄范围<sx:datetimepicker name="min" label="从" displayFormat="yyyy-MM-dd"></sx:datetimepicker>
        <sx:datetimepicker name="max" label="至" displayFormat="yyyy-MM-dd"></sx:datetimepicker>

所以传过来的格式很乱。但是,我们可以这样处理。

  String min=request.getParameter("min").substring(0,10);
  String max=request.getParameter("max").substring(0,10);

  mindate =Date.valueOf(min);
  maxdate=Date.valueOf(max);

就可以获得java.sql.Date的类型了

可以了解一下SimpleDateFormat,DateFormat有什么用!


当然,这里可以不必转成Date型再进行比较,数据库可以处理String类型的时间比较。

  String min=request.getParameter("min").substring(0,10);
  String max=request.getParameter("max").substring(0,10);

截断就好了。在SQL语句这样写。

String jpql = "select student from Student  student where student.birthday between "+min +"and "+max +"' and student.clas.class_Name=? ";

这样写执行可以成功,但是检索不了记录。min,max必须当做字符串来处理.'min','max'

sql语句

String jpql = "select student from Student  student where student.birthday between '"+min +"' and '"+max +"' and student.clas.class_Name=? ";

执行成功且查出数据。

总结:查询数据库中传过来的时间格式可以使String类型的,但是,必须需要''来引起来。否则,执行成功但是没有数据。因为,数据库比较时间大小处理的是'2011-2-12'而不是2011-2-12


你可能感兴趣的:(String类型转换成java.sql.Date存入数据库)