hibernate mysql 时间比较_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)

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,然后条件查询的时候就查询不出来任何东西。

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 = ...

随机推荐

VM出现该虚拟机正在使用中的提示,让获取所有权限解决办法

今天打开虚拟机正要学习,结果说是虚拟机似乎正在使用中,让我重新获取权限.解决办法:打开提示的配置文件的位置,将一个以.lck结尾的文件夹删除或者保存为另外的文件名称,再打开虚拟机就OK了.

shell学习之路:流程控制(if)

1.单分支if条件语句 if [ 条件判断式 ];then 程序 fi 或者 if [ 条件判断式 ] then 程序 fi 注意事项: 1.if语句使用fi结尾,和一般语言使用大括号结尾不同 2.[ ...

linux下删除文件名乱码文件

linux下通过rm命令来删除文件,但是如果要删除文件名乱码的文件,就不能直接使用rm命令了,因为压根就无法输出文件名来.不过借助find命令可以实现对其删除.在linux下对于每个文件都一个对应的不 ...

AIR 14 Beta - Missing builtin type Object 解决方法

使用AIR SDK14 时候出现 Missing builtin type Object 的问题 参考 https://forums.adobe.com/thread/1483159 下载最新的Fla ...

NLog在asp.net中的使用

一.关于安装 1.可以直接通过vs自带的Nuget包管理器来搜索下载,直接搜索"NLog": 注意,除了要安装第一个之外,一定要安装"NLog.Config", ...

安装wamp提示You dont't have permission to accesson on this server的解决方案

展示一下安装好的效果图 首先找到安装目录下的路径[wamp\bin\apache\Apache2.2.21\conf\] § 找到httpd.conf,用记事本打开httpd.conf,然后将 1. ...

解决IE6-IE8 Js代码不执行问题

一种可能的原因:form标签不完整. 使用在线工具,测试html代码标签的完整性.

llvm -O 经历过那些pass

https://stackoverflow.com/questions/15548023/clang-optimization-levels

显示iOS所有系统字体

显示iOS所有系统字体 源码地址: https://github.com/YouXianMing/UI-Component-Collection 效果图: 便于你开发中寻找适合自己的字体, demo中 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值