部分来自该博客
oracle对日期的操作详解,基本的操作全在这儿了

oralce里面数字字符串都可以进行加减和比较
“20200710” - 1 得到 20200709
数字能加减,那么也能比较
“20200710” < “20200709”

oracle里当前时间是 sysdate 。对这个变量直接加减操作是对 天数 日期的加减
昨天:sysdate - 1
明天:sysdate +1
上周:sysdate - 7
下周两周:systdate + 72
上一小时:sysdate - 1/24
上一分钟:sysdate - 1/24/60
上一秒:sysdate - 1/24/60/60
下就是加
操作月份、年份需用 add_months() (为什么?)
上个月:add_months(sysdate, -1) 下个月就 +1
上一年:add_months(sysdate, -12) 下两年 +12
2
为什么月份和年份不能用天的基本单位表示呢?oracle考虑的很合理的
毫秒、秒、分、时、天、周这几个之间的进制分别是1000、60、60、24、7,他们是固定不变的,所以只要天用的是 1 表示,那么这些其余的时间单位都可以表示。但是一个月却有不同,28天、29天、30天、31天都有可能,就不能用天数来前进或后退一个月,只能新开一个函数 add_months()的第二个参数用来加减月份,而一年肯定是12个月,那就可以用月份表示年份了,这个参数加减12的倍数就是年份了
这些所有的返回值还是sysdate。
日期类型和字符串之间的转换
to_char(sysdate, “yyyyMMdd”) 转换成 “20200710” 这样的字符串
to_date(“2020-07-10”, “yyyy-MM-dd”) 转换成 2020-07-10 00:00:00 这样的sysdate

有了 sysdate、add_months()、to_char()、to_date() 就可以对oracle的所有的日期时间进行的加减和转换字符串的运算

补充:oracle的 over() 并与之相关的操作 都属于oracle的总结
over():分析函数。用来返回一个结果集的,sum()、max()、min()、avg()等都是返回一条数据,而这个是返回一结果集。它不能单独使用。
over()函数写法over(partition by expr2 order by expr3),根据expr2对结果进行分区,在各分区内按照expr3进行排序;
over函数不能单独使用,需要与row_number(),rank()和dense_rank,lag()和lead(),sum()等配合使用。它需要 over(partition by arg1 order by arg2) 然后配合 row_number(),rank()和dense_rank,lag()和lead(),sum()等。几个具体用法如下:
oracle对日期的操作自总结WHERE rownum = 1 ; 取得就是结果集的第一条。

相关文章:

  • 2021-10-01
  • 2022-12-23
  • 2022-01-01
  • 2021-06-14
  • 2021-05-25
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-11
  • 2021-10-14
  • 2021-06-07
  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案