关于数据库日期操作的杂七杂八【格式化、互转、比较】

来源:互联网 发布:有网络但微信发不出去 编辑:程序博客网 时间:2024/05/01 21:14

1、java String与Date类型之间的相互转换

package test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
public class StringOrDate {
    publicstatic String dateToString(Date date, String type) {
        String str =null;
        DateFormat format =new SimpleDateFormat("yyyy-MM-dd");
        if(type.equals("SHORT")) {
            // 07-1-18
            format = DateFormat.getDateInstance(DateFormat.SHORT);
            str = format.format(date);
        }else if(type.equals("MEDIUM")) {
            // 2007-1-18
            format = DateFormat.getDateInstance(DateFormat.MEDIUM);
            str = format.format(date);
        }else if(type.equals("FULL")) {
            // 2007年1月18日 星期四
            format = DateFormat.getDateInstance(DateFormat.FULL);
            str = format.format(date);
        }
        returnstr;
    }
    publicstatic Date stringToDate(String str) {
        DateFormat format =new SimpleDateFormat("yyyy-MM-dd");
        Date date =null;
        try{
            // Fri Feb 24 00:00:00 CST 2012
            date = format.parse(str);
        }catch (ParseException e) {
            e.printStackTrace();
        }
//以上这种转出来不能直接参与和数据库date的比较
        // 2012-02-24
        date = java.sql.Date.valueOf(str);
                                             
        returndate;
    }
    publicstatic void main(String[] args) {
        Date date =new Date();
        System.out.println(StringOrDate.dateToString(date,"MEDIUM"));
        String str ="2012-2-24";
        System.out.println(StringOrDate.stringToDate(str));
    }
}


2、java.sql.Date.valueOf和java.sql.Timestamp.valueOf


要说明的是如果采用的是

java.sql.Date.valueOf,

比较的时候,如2012-05-09如果存在数据库的是datetiime会有2012-05-09 00:00:00以后的都不会被查询出来就是当天的查询不出来。

要实现能查询出来则要使用

java.sql.Timestamp.valueOf

在开始时间写撑yyyy-mm-dd 00:00:00 截至时间写成yyyy-mm-dd 23:59:59就能查询到当天的了


3、关于日期比较

如果一个时间段好像用.>/<=。时间区间貌似就不行了。


时间区间的话在sql中用between记得时间要加引号

在hql中的话setDate记得里面的date用的是java.sql.date火车java.sql.timestamp



格式化Hibernate的SQL输出语句
今天在网上看到这么一段,很实用:

如果想要仔细看Hibernate生成的SQL语句,将format_sql设为true可以很大程度地减轻痛苦……
hibernate.format_sql = true

配置文件则加<property name="format_sql">true</property>
再加上这个的话:
hibernate.use_sql_comments = true
[可读性 + 可定位性]会更好
不过,这两个一起来的话也会造成SQL在console中显示的篇幅很大。

原创粉丝点击