Hibernate中HQL函数汇总及获取当前时间进行比较举例
在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hibernate的面向对象的语句 sessionFactory.getCurrentSession().createQuery(sql);
我们应改成 sessionFactory.getCurrentSession().createSQL(sql);就可以了。
但有时项目要求必须要使用hql,比如说将相应的接口都封装成了jar包,本人就遇到了这样的情况,在用hql语句比较当前时间时,一开始使用sql语句进行拼接,结果一直报错。在这里给大家展示一下Hql常用的函数吧:
| 函数名称 | 说明 | 类型 | 支持 | 使用方法 | 备注 |
| ABS(n) | 取绝对值 | 数学函数 | JPAQL HQL | ABS(column_name[数字类型对象属性]) | |
| SQRT(n) | 取平方根 | 数学函数 | JPAQL HQL | SQRT(column_name[数字类型对象属性]) | |
| MOD(x,y) | 取余数 | 数学函数 | JPAQL HQL | MOD([对象属性(数字)或值],[对象属性(数字)或值]) | 数字必须是整型,返回参数1/参数2得的余数 |
| SIZE(c) | 方法集合内对象数量 | 集合函数 | JPAQL HQL | ||
| MINELEMENT(c) | 返回集合中最小元素 | 集合函数 | HQL | ||
| MAXELEMENT(c) | 返回集合中最大元素 | 集合函数 | HQL | ||
| MININDEX(c) | 返回索引集合最小索引 | 集合函数 | HQL | ||
| MAXINDEX(c) | 返回索引集合最大索引 | 集合函数 | HQL | ||
| MAX(n) | 返回最大值 | 集合函数 | JPQHQL HQL | ||
| MIN(n) | 返回最小值 | 集合函数 | JPQHQL HQL | ||
| COUNT(n) | 返回计数 | 集合函数 | JPQHQL HQL | ||
| CONCAT(s1,s2) | 连接连个字符串 | 字符串函数 | JPQHQL HQL | CONCAT([对象属性],[对象属性]) | |
| SUBSTRING(s,offset,length) | 返回子串 | 字符串函数 | JPQHQL HQL | SUBSTRING([要截取的字符串属性字段],开始位置,截取长度) | |
| TRIM([[BOTH/LEADING/TRAILING]] char FROM s) | 默认去掉字符串两面的空格 | 字符串函数 | JPQHQL HQL | TRIM([字符串对象属性列]) | 将字段两端的空格去掉 |
| LOWER(s) | 小写 | 字符串函数 | JPQHQL HQL | LOWER([字符串对象属性列]) | 将该列结果含有的字母全部大写 |
| UPPER(s) | 大写 | 字符串函数 | JPQHQL HQL | UPPER([字符串对象属性列]) | 将该列结果含有的字母全部大写 |
| LENGTH(s) | 返回字符串长度 | 字符串函数 | JPQHQL HQL | LENGTH(字段名) | 返回字段内容的长度,包括数字。null值返回null. |
| CURRENT_DATE() | 返回数据库当前日期 | 时间函数 | JPAQL HQL | CURRENT_DATE() | 返回数据库当前日期 |
| CURRENT_TIME() | 时间 | 时间函数 | JPAQL HQL | CURRENT_TIME() | 返回数据库当前时间 |
| SECOND(d) | 从日期中提取具体秒 | 时间函数 | HQL | SECOND(时间字段) | 空的时候返回null |
| MINUTE(d) | 从日期中提取具体分 | 时间函数 | HQL | MINUTE(时间字段) | 空的时候返回null |
| HOUR(d) | 从日期中提取具体小时 | 时间函数 | HQL | HOUR(时间字段 | 空的时候返回null |
| DAY(d) | 从日期中提取具体天 | 时间函数 | HQL | DAY(时间字段) | 空的时候返回null |
| MONTH(d) | 从日期中提取具体月 | 时间函数 | HQL | MONTH(时间字段) | 空的时候返回null |
| YEAR(d) | 从日期中提取具体年 | 时间函数 | HQL | YEAR(时间字段) | 空的时候返回null |
eg:数据库某个时间与当前时间进行比较
1. String hql = "FROM " + User.class.getName() + " WHERE (TO_DAYS(registerDate) >= TO_DAYS(current_timestamp()) AND TO_DAYS(registerDate) < TO_DAYS(current_timestamp()) + 1) ";
2. String hql = "FROM " + User.class.getName() + " WHERE UNIX_TIMESTAMP(insertTime) > UNIX_TIMESTAMP(current_timestamp()) - 24 * 60 * 60 ";
注意:hql语句与sql语句都不推荐使用current_date() - 1或者currentdate()+1这种写法,通常情况下是没有问题,但遇到特殊情况就会产生异常。例如当前日期为11月1号,则current_date() - 1会生成日期1970-01-01,然后条件查询的时候就查询不出来任何东西。
Hibernate中HQL函数汇总及获取当前时间进行比较举例的更多相关文章
- OpenCV图像处理中常用函数汇总(1)
//俗话说:好记性不如烂笔头 //用到opencv 中的函数时往往会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总: Mat srcImage = imread("C:/Us ...
- Hibernate中HQL的日期差值计算,可计算相差多少秒
最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了. 网上找了一下总共的日期函数有一下几个: CURRENT_DATE() 返回数据库当前日期 时间函 ...
- thinkphp中的内置操作数据库与mysql中的函数汇总
8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...
- javascript中常用函数汇总
js中函数很多,在实际项目开发中,函数的应用可以很大程度上简化我们的代码,所以在此记下开发中js中常用的函数,增强记忆. 1.isNaN(X):函数用于检查其参数是否是非数字值. 如果 x 是特殊的非 ...
- 实现系统函数time,获取当前时间与UTC的间隔
因种种原因,最近很少上cnblogs了.刚写了一个实现time的函数,可以通过该函数获取当前时间与1970年1月1日 0时0分0秒的差值,精确到秒,可以用在某些没有时候使用time不正确而不得不调用硬 ...
- hibernate 中HQL查询
由于比较简单,在此处只写一些HQL语言. 表关系,多对一. CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, `uname` varchar( ...
- hibernate中HQL练习时候一个小小的错误导致语法异常
package cn.db.po.test; import java.util.List; import cn.db.po.User; import cn.db.po.biz.UserBiz; pub ...
- hibernate中HQL多对多的查询
现有三张表 TLXPURCHASE.采购事项审批表,TLXPURCHASEACTIVITY.采购招标活动对应表,TLXACTIVITY.招标活动表,采购事项审批表和采购活动表是多对多关系.java中定 ...
- Hibernate 中Hql 查询中间表的用法
案例简述: 项目中存在User 用户表 和 Role 角色表 它们之间是多对多的关系 在User类定义中 使用hibernate注解 //角色列表 @ManyToMany(targetEntity = ...
随机推荐
- [leetcode-500-Keyboard Row]
Given a List of words, return the words that can be typed using letters of alphabet on only one row' ...
- 【Android Developers Training】 91. 解决云储存冲突
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- grep[行号&正则匹配字符有颜色]
事情是这样的,昨天在深入学习grep命令时,看到别人博客用grep正则匹配,不仅行数有颜色,而且匹配到的字符也有颜色.我在CRT也试了下,毛颜色都没有.顿时感觉 so low. 解决 编辑vim~/. ...
- accp8.0转换教材第10章Ajax和jQuery理解与练习
C/S (Client/Server)结构,即大家熟知的客户机和服务器结构. B/S(Browser/Server)结构即浏览器和服务器结构. 认识ajax .XMLHttpRequest.使用jqu ...
- PostgreSQL 使用 PreparedStatement 导致查询慢的分析
实验环境: DB is PostgreSQL version 8.2.15 JDK1.8 测试一 使用JDBC查询一个SQL: public static void test1(String url, ...
- 妙用Outlook2003群发商业邮件
妙用Outlook2003群发商业邮件 我们知道,如果需要在Outlook 2003中向多个对象发送邮件,那么只需要在指定收件人时用分号输入多个邮件地址或者使用抄送方式即可:假如对象较多,可以使用 ...
- Javascript 判断变量类型的陷阱 与 正确的处理方式
Javascript 由于各种各样的原因,在判断一个变量的数据类型方面一直存在着一些问题,其中最典型的问题恐怕就是 typeof null 会返回 object 了吧.因此在这里简单的总结一下判断数据 ...
- 基于pytorch实现word2vec
一.介绍 word2vec是Google于2013年推出的开源的获取词向量word2vec的工具包.它包括了一组用于word embedding的模型,这些模型通常都是用浅层(两层)神经网络训练词向量 ...
- Win Linux 双系统安装指南
双系统安装指南 环境说明 硬件:一块240G NVMe,一块240G SSD,一块2T的HDD. 系统:Linux Mint 18.2,Windows 10 Enterprise Version 17 ...
- web开发之负载均衡的简单架构
负载均衡 负载均衡的核心思想就是:请求分担 最简单的配置: 一台负载均衡服务器 两台webserver服务器 两台webserver服务器需要配置相同的服务器环境,设置相同的域名指向 负载均衡服务器需 ...