ADD_MONTHS函数有两个强制参数。语法:ADD_MONTHS(start date,number of months)。在将指定的月数添加到start date之后,函数才计算目标日期。月数可能是负数,这样返回的目标日期就早于起始日期。number of months可以是小数,但会忽略小数部分,而使用整数部分。
select add_months('07-APR-2009',1) from dual;
select add_months('07-APR-2009',2.5) from dual;
select add_months('07-APR-2009',-12) from dual;
NEXT_DAYNEXT_DAY函数返回的日期是星期内指定的日子下一次出现时的日期。
NEXT_DAY函数有两个强制参数。语法:NEXT_DAY(start date,day of the week)。函数计算在start date之后day of the week参数下一次出现的日期。day of the week参数可以是字符值或者整数值。可接受的值由NLS_DATE_LANGUATE数据库参数确定,但默认值至少是日子名称的前三个字符或者整数值,其中1表示星期日,2表示星期一,以此类推。在任何情况下都应该指定表示星期几的字符值。简短名称可以大于三个字符,例如星期日可以表示为sun、sund、sunda或者sunday。
select next_day('01-JAN-2009','tue') from dual;
select next_day('01-JAN-2009','WEDNE') from dual;
select next_day('01-JAN-2009',5) from dual;
LAST_DAYLAST_DAY函数返回指定日子所属的月的最后一天的日期。
LAST_DAY函数有一个强制参数。语法:LAST_DAY(start date)。该函数提取start date参数所属的月,并计算该月最后一天的日期。
select LAST_DAY('01-JAN-2009') from dual;
日期ROUND日期ROUND函数依据指定的日期精度格式对值进行舍入运算。返回的值要么向上舍入要么向下舍入为最接近的日期精度格式。
日期ROUND函数使用一个强制参数和一个可选参数。语法:ROUND(source date[,date precision format])。source date参数表示任意日期项。date precision format参数指定舍入的精度,是可选的,如果没有指定,默认的舍入精度是日。date precision formats 包括世纪(CC)、年(YYYY)、季度(Q)、月(MM)、星期(W)、日(DD)、时(HH)和分(MI)。
向上传入到世纪相当于给当前世纪加1个世纪。如果日部分大于16,就会向上舍入到下一个月,否则就会向下舍入到当月的开头。如果月在1和6之间,那么舍入到年就会返回当年开头的日期,否则返回下一年开头的日期。
select round(sysdate) day,round(sysdate,'w') week,round(sysdate,'month') month,round(sysdate,'year') year from dual;
select round(sysdate,'cc') cc,round(sysdate,'q') q,round(sysdate,'hh'),round(sysdate,'mi') min hour from dual;
日期TRUNC日期TRUNC函数依据指定的日期精度格式对值进行截取运算。
日期TRUNC函数使用一个强制参数和一个可选参数。语法:TRUNC(source date[,date precision format])。source date参数表示任意日期项。date precision format 参数指定截取的精度,它是可选的,如果没有指定,默认的截取精度是日。即source date的所有时间部分都设置为午夜(00:00:00)。月级别上的截取将source date的日期设置为该月的第一天。年级别上的截取返回当年开头的日期。
select trunc(sysdate) day,trunc(sysdate,'w') week,trunc(sysdate,'month') month,trunc(sysdate,'year') year from dual;
五、隐式数据类型转换如果可能,可以将数据类型与函数所需参数的数据类型不相符的值隐式转换为所需的格式。VARCHAR2和CHAR数据类型统称为字符类型。字符字段非常灵活,几乎允许存储所有类型的信息。因此,可以方便地将DATE和NUMBER值转换为它们的字符形式。这些转换称为数字到字符(number to character)和日期到字符(date to character)转换。
select length(1234567890) from dual;
select length(0123456789) from dual;
select length(sysdate) from dual;.
将字符数据隐式转换为数字数据类型的情况并不常见,因为出现这种情况的唯一条件是该字符数据表示有效数字。