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

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 {
     public static 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);
         }
         return str;
     }
     public static 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);
                                             
        return date;
    }
     public static 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中显示的篇幅很大。

你可能感兴趣的:(sql,数据库,Date,Hibernate,String,Comments)