

Oracle数据库日期格式处理,计算年龄
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.

Oracle数据库日期格式处理,计算年龄
系统时间
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的最大整数
Recommend
-
16
阿航 2020年10月24日...
-
12
修改 story-with-qq 日期格式 · juzhiyuan/blog@a178881 · GitHubPermalink
-
16
excel 打开 csv 文件 日期格式不一致 ...
-
7
V2EX › 程序员 发现 Ruby 格式化日期有点奇怪, 1/Jan/2022:00:00:00 会格式化成 2021 年 1 月 1 日
-
9
GO语言程序中解决中文日期格式的解析问题 最近做一个使用gin框架的GO语言项目,需要将前端传递过来的中文日期...
-
6
Mssql数据库日期格式处理 yan 2021-12-26 /...
-
5
JSON作为一种轻量级的数据交换格式,通常采用完全独立于编程语言的文本格式来存储和表示数据。它的层次结构简洁清晰,易于人们的阅读和编写,此外机器编写和生成也会变得容易,可以有效...
-
5
Oracle SQL 两个日期类型毫秒值求差,日期转毫秒,时间差(ms)自定义函数解决毫秒差 推荐 原创
-
8
Go 解析日期格式-解决 parsing time xx as xx: cannot parse xx as xx 错误 我爱张智容 · 2021-02-10 12:32:37 · 1396 次点击 · 预计阅读时间 5 分钟 ·...
-
8
Windows 11 默认使用你在安装系统时或手动配置的「区域」来匹配日期的显示格式。根据用户的...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK