5

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

 2 years ago
source link: https://www.mihu.live/archives/238/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

yan
2021-02-27 / 0 评论 / 259 阅读 / 已收录
02/27
系统时间
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日期格式处理


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK