Oracle数据库日期格式处理,计算年龄
侧边栏壁纸
  • 累计撰写 34 篇文章
  • 累计收到 86 条评论

Oracle数据库日期格式处理,计算年龄

yan
yan
2021-02-27 / 0 评论 / 538 阅读 / 正在检测是否收录...

基本格式

系统时间
SELECT sysdate FROM dual;  

格式转换

字符串转日期

SELECT to_date('2021/2/27 15:52:15', 'YYYY-MM-DD HH24:MI:SS') from dual;   --2021/2/27 15:52:15
SELECT to_date('2021-02-27 15:52:15', 'YYYY-MM-DD HH24:MI:SS') from dual;  --2021/2/27 15:52:15
SELECT to_date('2021-02', 'YYYY-MM') from dual;   --2021/2/1
SELECT to_date('2021', 'YYYY') from dual;    --2021/2/1

如果省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。 
如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。 
同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月(2021/2/1)。 
但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年(2021/1/1),而是取整到系统当前月

日期转字符串

SELECT to_char(sysdate,'yyyy-mm-dd') FROM dual;  --2021-02-27
SELECT to_char(sysdate,'dd-mm-yyyy') FROM dual;  --27-02-2021

其他计算命令

计算本年天数
SELECT add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy') FROM dual;

1.oracle的时间差是以天数为单位的
2.add_months函数有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的)
3.trunc函数,可以截取日期,也可以截取数字
TRUNC(date[,fmt])
其中:
date 一个日期值;fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去
下面是该函数的使用情况:
trunc(sysdate,'yyyy') --返回当年第一天.
trunc(sysdate,'mm') --返回当月第一天.
trunc(sysdate,'d') --返回当前星期的第一天.
判断闰年,LAST_DAY函数返回指定日期对应月份的最后一天 
SELECT to_char(last_day(to_date(2020 || '02', 'yyyymm')), 'dd') FROM dual --29则为闰年
某月的第一天,最后一天
SELECT trunc(sysdate,'mm'),last_day(trunc(sysdate,'mm')) FROM dual;
前一个月最后一天
SELECT trunc(to_date('20210131','yyyy-mm-dd'),'mm')-1 FROM dual;
SELECT to_date(substr('20210131',1,6),'yyyy-mm')-1 FROM dual;
计算某个人的年龄
SELECT trunc(months_between(sysdate,to_date('19980401','yyyymmdd'))/12) FROM dual;
SELECT floor(months_between(sysdate,to_date('19980401','yyyymmdd'))/12) FROM dual;

MONTHS_BETWEEN函数返回两个日期之间的月份数。
格式:MONTHS_BETWEEN(DATE1,DATE2)

trunc函数在截取数字时,不对指定小数前或后的部分做相应舍入选择处理。
TRUNC(number[,decimals])
其中:
number 做截取处理的数值
decimals 指明需保留小数点后面的位数。忽略它则截去所有的小数部分。
例:
SELECT trunc(123.123,1) FROM dual;   --123.1
SELECT trunc(123.123) FROM dual;     --123
SELECT trunc(123.123,-1) FROM dual;  --120
SELECT trunc(123.123,-2) FROM dual;  --100
SELECT trunc(123.123,-3) FROM dual;  --0

floor函数,对应的有ceil函数
ceil(n) 取大于等于数值n的最小整数
floor(n)取小于等于数值n的最大整数

附: Sqlserver日期格式处理

0

评论 (0)

取消