Hibernate的Hql中的日期比较(mysql数据库)

来源:互联网 发布:湘北vs山王 数据 编辑:程序博客网 时间:2024/05/02 04:23

例如: String hql  = '' select count(*) from record where recordTime  >=" +toDate(beginDateStr, hqlFormat) +" and  recordTime <="  + toDate(endDateStr, hqlFormat);

注释:beginDateStr,endDateStr为日期格式的字符串,如:2013-07-06 13:35:23

            hqlFormat为%Y-%m-%d %H:%i:%s

利用下面的方法将字符串日期格式转换成mysql下的日期格式。

   /** 
     * 将日期转化成 mysql 的 str_to_date(date,'%Y-%m-%d-%H-%h-%i') 格式 
     * @param date 日期字符串 
     * @param hqlFormat mysql的日期格式,例如:'%Y-%m-%d-%H-%h-%i' 
     * @return 
     */  
    private static String toDate(String date,String hqlFormat) {  
        StringBuffer bf = new StringBuffer();  
        bf.append("str_to_date('");  
        bf.append(date);  
        bf.append("','");  
        bf.append(hqlFormat);  
        bf.append("')");  
        return bf.toString();  
    }


2、mysql 将时间戳直接转换成日期时间

date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串,
后面的 '%Y%m%d' 主要是将返回值格式化 
例如: 
mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' )  
->20071120 
mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y年%m月%d' )  
->2007年11月20 


UNIX_TIMESTAMP(date)是与之相对正好相反的时间函数,date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。 
 例如:
UNIX_TIMESTAMP(),mysql> SELECT UNIX_TIMESTAMP() ; (执行使得时间:当前时间) 
->1249524739