第八章 Oracle中的日期型介绍
oracled的日期处理
-
oracle修改默认时间格式:
- alter session set nls_date_format=‘yyyy-mm-dd HH24:MI:SS’;
-
获取当前日期:sysdate()
-
为日期加上特定月份:add_months()
-
-
在一年之中,各个月的天数不同相同。因此在添加特定月份时,需要注意Oracle的特殊处理方式。举例如下:
-
-
解释:以add_months(sysdate,1)为例,如果sysdate为当月最后一天,则oracle将返回下个月的最后一天;如果sysdate中当月的天数大于下个月的天数时,oracle将返回下个月的最后一天。
-
-
-
返回特定日期所在月的最后一天:last_day()
-
last_day()函数用于返回某个日期所在月份的最后一天,返回值同样为一个日期型。
-
-
返回两个日期所差的月数:months_between()
-
months_between()函数用于返回两个日期相减获取的月数。该函数的返回值并不一定为整数。
-
-
注意
- 对于非整数月份,Oracle计算规则为非整数天数除以31
- 如果第一个参数所代表的日期小于第二个参数,那么months_between()函数将返回一个负数。
-
-
-
返回特定日期之后的一周内的日期:next_day()
-
oracle中的星期数对应的的数字
-
next_day()函数返回特定日期之后的一个星期之内的日期。
-
例如:返回2022年4月22日的下个星期三
-
-
-
截取日期:trunc(日期原始值,截取格式)
-
trunc()函数不仅可以截取数字,而且可以截取日期,其工作原理于截取数字非常相似。
-
使用该函数,需要指定日期原始值和截取格式代码(即截取到日期的哪个部分)。
-
举例:
-
以上示例可知,trunc()函数的作用为屏蔽至某个时间位,将屏蔽部分置为最小值。
-
oracle中trunc()函数的屏蔽位与格式代码:
-
-
返回当前会话时区的时间戳:current_timestamp()
-
返回日期的某个域:extract(域名 from 日期);
-
日期中的年、月、日、时、分、秒 等可以看作日期的域。extract()函数可以从一个日期中分解出各个域。
-
Oracle 日期中的域及域代码的列表
-
举例:
-
注意:使用日期型无法分解小时、分钟、秒等信息
-
使用时期时间型分解需要的时间域信息
-
-
-
-
将日期转换为字符串:to_char(日期,格式)
-
-
Oracle定义了to_char()函数的日期格式代码,如下:
-