select months_between(to_date('2014-3-21','mm-dd'), to_date('2014-1-11','mm-dd')) months from dual
2.32258064516129
你要换算什么东西
你用months_between函数求的是月份,两个时间相差2.3个月
直接取整就行了
月份相减的结果换算没有任何意义,每个月天数都不一样
要么你别用函数,直接把两个时间字段相减,得出的是相差的天数,带小数的
那么天数乘以86400秒就是相差的秒数
是指存储了毫秒,微秒是吧?一般时间值显示到秒,没有显示到毫秒和微秒的
Oracle 毫秒的存储必须字段类型为 timestamp(6) –数字表示存储的毫秒位数
--当前毫秒级时间
select to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;
--字符串转为 timestamp类型
select to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.ff6') from dual;
--timestamp转为字符型
select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;
PS: ff后面的数字表示获得的毫秒位数,默认是6;一般ff3 获得三位毫秒数。
时间操作可以参考下这个, http://t.csdn.cn/XgzSS
获取结果之后可以四舍五入,取整等操作,详细可以参考下这个 http://t.csdn.cn/yy1rb
小数点后面是去掉间隔月多的天数/31得来的 得到的就是月份加天数/31的值 可以看下这个博客
直接取整试试看
select TO_NUMBER(TO_DATE('2014-3-21','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2014-1-11','yyyy-mm-dd hh24:mi:ss'))
AS 相差天数 from dual
这么写是可以获取天数