时间,在数据库里实际是以长整型表示即1900-1-1日到当前的天数于是不难理解时间是可以做减法的
当然,为了简便,规定差值1为一天的,如果当前时间+365即明年的4月2日22:49:40秒
那么算下来,1秒即为:1/(243600)=000001157
至于分钟,小时,周数等等,都是些函数转换没啥希奇
select sysdate - to_date('20141020', 'yyyymmdd') from dual;
oracle里日期型之间是可以直接运算的,这样的结果就是现在的时间和2014-10-20日之间间隔的天数,注意这个值是有小数位的,即两个日期值之间的精确计算的差值,如果需要结果为整数的天数,对结果turnc、round即可。
Year:
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007
Month:
mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
month spelled out 字符集表示 显示值:11月,若是英文版,显示november
Day:
dd number 当月第几天 显示值:02
ddd number 当年第几天 显示值:02
dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
处理月份天数不定的办法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
找出今年的天数
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
闰年的处理方法
to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' ) 如果是28就不是闰年
一年的第几天
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
查找月的第一天,最后一天
SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;
以上就是关于在 oracle 如何计算 两个日期间的 秒数、分钟数、小时数、天数、周数、月数、年数全部的内容,包括:在 oracle 如何计算 两个日期间的 秒数、分钟数、小时数、天数、周数、月数、年数、Oracle 获得两个日期之间间隔的月份数和天数、oracle中,知道系统时间(sysdate),有个日期函数能得到他是整个时间的第几天。不是每年的ddd,每月的dd等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)