最近在使用H2内存数据库,在将oracle中的SQL转换为H2中的SQL时,有些函数H2不存在,幸好H2支持自定义函数 ,于是自己使用日历写了下面这个仿oracle的months-between函数:

public static double monthsBetween(Date start,Date end){Calendar startCalendar = Calendar.getInstance();startCalendar.setTime(start);Calendar endtCalendar = Calendar.getInstance();endtCalendar.setTime(end);int startYear = startCalendar.get(Calendar.YEAR);int endYear = endtCalendar.get(Calendar.YEAR);int startMonth = startCalendar.get(Calendar.MONTH);int endMonth = endtCalendar.get(Calendar.MONTH);int startDay = startCalendar.get(Calendar.DATE);int endDay = endtCalendar.get(Calendar.DATE);int startHour =startCalendar.get(Calendar.HOUR_OF_DAY);int startMinute = startCalendar.get(Calendar.MINUTE);int startSecond = startCalendar.get(Calendar.SECOND);int endHour =endtCalendar.get(Calendar.HOUR_OF_DAY);int endMinute = endtCalendar.get(Calendar.MINUTE);int endSecond = endtCalendar.get(Calendar.SECOND);double result = (startYear*12+startMonth) - (endYear*12+endMonth);int countDay = ((startDay * 24) - (endDay * 24))/24;double countHourDay = (startHour - endHour)/24d;double countMinuteDay = (startMinute - endMinute)/(60d*24d);double countSecondDay = (startSecond - endSecond)/(60d*24d*60d);double factor = (1d/31d);result += countDay * factor;result += countHourDay * factor;result += countMinuteDay * factor;result += countSecondDay * factor;return result;
}

java实现oracle的months_between函数相关推荐

  1. Oracle中MONTHS_BETWEEN函数的使用

    ORACLE中函数MONTHS_BETWEEN的使用 格式:MONTHS_BETWEEN(DATE1,DATE2)MONTHS_BETWEEN函数返回两个日期之间的月份数. SQL> selec ...

  2. 用java调用oracle存储过程和函数

    创建测试用表: CREATE TABLE USER (    I_ID   VARCHAR(50) NOT NULL,    I_NAME VARCHAR(50) NOT NULL ); 一:无返回值 ...

  3. Oracle数据库中调用Java类开发存储过程、函数的方法

    Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日  浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...

  4. java oracle 连接字符串函数_通过shell来比较oracle和java中的字符串使用

    这些准备工作齐了之后,我们来从Java中的字符串使用入手来比较一下oracle中对于字符串的处理. java中有如下的一些函数,我会依次来做比较. public char charAt(int ind ...

  5. java调用oracle的函数,从Java调用Oracle函数

    我有以下功能规格: FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2, IN_parameter2 IN VA ...

  6. java中instr函数,Oracle中instr函数使用方法

    INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始到字符的结尾就结束. 语 ...

  7. Oracle 内置函数

    F.1字符函数--返回字符值 这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据 ...

  8. Oracle的sql 函数

    Oracle的SQL函数 Oracle的SQL函数分为单行函数和多行函数.单行函数只对单条记录有效,多行函数对多条记录有效. 单行函数包括,字符.数字.日期.转换和普通函数. 字符函数举例: ?全小写 ...

  9. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间:2007 ...

最新文章

  1. 震撼!17 个改变世界的数学公式...
  2. 详解XMind各种上传分享分类
  3. rdb和aof优势劣势
  4. tableview的reloadData 产生的问题
  5. 计算机英文版个人简历发文,计算机个人简历英文_英文简历.doc
  6. C#设计模式之17-中介者模式
  7. 如何在Postgresql中使用模糊字符串匹配
  8. win7充当无线路由器
  9. java objective-c_Objective-C基础教程学习笔记(附录)从Java转向Objective-C
  10. 浏览器的加载顺序与页面性能优化
  11. 添加文件夹语音_微信语音导出方法大全,微信群语音转发只需3步
  12. PXE+kickstart 无人值守安装CentOS 6
  13. android 按键上报流程,input子系统详解,按键如何上报
  14. android flurry 教程,android一种统计工具Flurry的使用说明
  15. 记一次瞬时网络挂起和XMLHttpRequest: 网络错误 0x2eff
  16. mac 解压rar文件
  17. 昨日种种皆成今我,切莫思量切莫哀
  18. 《保卫萝卜》分析续——地图构成
  19. 六级考试-考前最后一背
  20. 【CSDN】文章撰写方法

热门文章

  1. KISSY基础篇乄KISSY之Anim(1)
  2. Oulipo(欧力波)(经典kmp模板题) HDU-1686
  3. “数据”到底是资产还是负债?
  4. Windows10连接Google手机,短信照片同步折腾记录
  5. 机顶盒ttl无法输入_哪位大神帮帮忙,B860 AV1.1 TTL 无法输入命令
  6. python编程计算器_Python3-用Python编写计算器的3种方法
  7. Codeforces Round #652 div2 总结 端午节前小结
  8. 输入两个正整数,求其最大公约数和最小公倍数。
  9. agc001E BBQ Hard
  10. 完全用 GNU/Linux 工作(转)