最近有个业务需求就是计算订单创建时间离现在超过 4 小时的订单都查找出来! 那么就需要用到日期函数了。 网上找了一下总共的日期函数有一下几个:

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

  显然这个不能满足需求,CURRENT_DATE 最后得出来的结果是:2015-07-18    而CURRENT_TIME()得出来的结果是:14:40:58,不算是一个日期类型,然后我百度了一下找到了这个函数  CURRENT_TIMESTAMP(),确定是可以使用的。返回的是:2015-07-18 14:40:58, OK。满足了现在的需求。接下来就是计算两个日期类型的差值的问题:

  问题来了:CURRENT_TIMESTAMP() - createTime,当CURRENT_TIMESTAMP()为2015-07-18 14:42:55,createTime为:2015-07-15 10:30:21,返回的结果居然是:3041234,无法相信自己的眼睛。其实这个值也是有规律可循的, 每2位数表示一个 年 月 日 时 分 秒。

  那么,34 :表示相差34秒

12:表示相差12分

04:表示相差4小时

以此类推。

当然也回存在以下的数值:2961512。这个怎么理解呢? 首先,12秒,15分很好理解,跑出来一个 96?莫非是96小时?   当然答案是错误的,因为当结算小时差时,被减数的值小于减数,那么就必须借位,即算法为:  24-(100-96) = 20,相差20小时,同理分钟位如果是 81,那么相差分钟数为:60-(100-81)=41分,以此类推。

基本的算法懂了,那么问题就好解决了,相差4小时,那么只需要满足  (CURRENT_TIMESTAMP() - createTime)>40000即可,4分钟只需要满足 (CURRENT_TIMESTAMP() - createTime)>400即可,其它以此类推!

我找不到更好的计算两个日期类型的差值的方法,只能用这个笨方法了,不知道网友们可有其它好的解决办法供参考参考! 我相信这个需求其实还是非常大的。这个问题的缘由也是因为项目不能用原生的SQL导致的。

Hibernate中HQL的日期差值计算,可计算相差多少秒的更多相关文章

  1. 九度OJ 1096:日期差值 (日期计算)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8138 解决:2752 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据, ...

  2. 题目1096:日期差值(a-b=(a-c)-(b-c))

    http://ac.jobdu.com/problem.php?pid=1096 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每 ...

  3. Android 获取当前日期距离过期时间的日期差值的完整方法直接使用

    /*** * 获取当前日期距离过期时间的日期差值 * @param endTime * @return */public String dateDiff(String endTime) { Strin ...

  4. 输出有序数组的中两个元素差值为指定值diff的两个元素

    题目: 输出有序数组的中两个元素差值为指定值diff的两个元素. 思路: 这与输出两个元素的和的值为一定值类似,需要两个指针,不同的是:指针不是一左一右,而是一前一后. 如果差值等于diff,则返回: ...

  5. 九度oj 题目1096:日期差值

    题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行, ...

  6. MVC 下 ajax调用 日期差值计算

    背景: 服务项目已有服务期起止时间From-To 现在要根据用户输入的新的起始时间, 和该服务期的原有区间值, 计算出新的服务期截止时间 即 NewServiceToDateTime = NewSer ...

  7. 关于Java中计算日期差值不准确问题

    1.字符串日期相减 如:2016-4-1,必须先将此字符串转成Date对象,并且, 格式必须为:yyyy—MM—dd  HH:mm:ss. 如果不转就直接计算(2016-4-1)两个这样的日期,则误差 ...

  8. Hibernate中HQL函数汇总及获取当前时间进行比较举例

    在很多时候,我们负责的项目中,在数据访问层(DAO层)通常我们会使用sql语句或者hql语句,而在我们使用hql语句拼接时有时会报错,通常的原因是:我们使用了标准的sql语句,开启的确是hiberna ...

  9. Hibernate中Hql查询

    这篇随笔将会记录hql的常用的查询语句,为日后查看提供便利. 在这里通过定义了三个类,Special.Classroom.Student来做测试,Special与Classroom是一对多,Class ...

随机推荐

  1. 解决mini2440开发板和虚拟机相互ping不通

    很奇怪的事,前段时间使用都还是好好的,但今天不知什么原因开发板和虚拟机怎么也无法PING通. 虚拟机用的:fedora14 开发板IP:192.168.0.250 虚拟机IP:192.168.0.10 ...

  2. 在js中使用json

    在js中使用json var obj = {     "1" : "value1",     "2" : "value2" ...

  3. python functools.wraps装饰器模块

    # -*-coding=utf-8 -*-#实现一个函数执行后计算执行时间的功能 __author__ = 'piay' import time, functools def foo(): ''' 定 ...

  4. 字典:当索引不好用时2 - 零基础入门学习Python026

    字典:当索引不好用时2 让编程改变世界 Change the world by program 上节课我们学习到在一些情况下,比序列更实用的映射类型:字典.我们知道字典也有个关键符号就是大括号(也叫花 ...

  5. 黑马程序员——读取Plist文件

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ 读取Plist文件     一:新建一个plist文件,并将plist文件数据填入plist文件中,这里pli ...

  6. R教程计划

    提起数据挖掘,似乎会有很多人望而却步,从生产规划到到规律分析,从生物医学到航天科技,到处都有数据挖掘工程师留下的影子. 通过对比SAS,SPSS,以及R,最终选定了R, 不为什么,免费且高效才是硬道理 ...

  7. hdu 1116 Play on Words

    http://acm.hdu.edu.cn/showproblem.php?pid=1116 欧拉通路和欧拉回路 #include <cstdio> #include <cstrin ...

  8. 伪造队形(FFT)

    题目描述Tukkun带着他的合唱队去环形音乐厅参加演出.上场前,Tukkun发现了严重的问题:音乐厅的工作人员把他们的合唱队形搞错了.具体来说,Tukkun的合唱队有N个人围成一圈,身高按照顺时针顺序 ...

  9. 微信授权登陆接入第三方App(步骤总结)Android

    微信授权登陆接入第三方App(步骤总结)Android Android App实现第三方微信登录

  10. Hdu4005-The war(双连通缩点)

    In the war, the intelligence about the enemy is very important. Now, our troop has mastered the situ ...