Oracle知识点整理(四)
前言
日期关键字
SYSDATE
SYSTIMESTAMP
日期函数
TO_DATE
TO_CHAR
LAST_DAY
ADD_MONTHS
MONTHS_BETWEEN
NEXT_DAY
LEAST/GREATEST
日期得计算
日期RR注意点
空值NULL
默认值
插入NULL
修改NULL
NULL值的运算操作
空值函数
前言
这一篇是最后的一个过度篇幅,主要涉及日期和空值操作。
日期关键字
SYSDATE
返回当前系统时间DATE类型的值,精确到秒,其本质是一个Oracle的内部函数
默认格式为:DD-MON-RR
SYSTIMESTAMP
返回当前系统时间的时间戳类型的值,精确到毫秒,本质也是内部函数
日期函数
TO_DATE
TO_DATE(‘2020-01-01 14:22:22’,‘YYYY-MM-DD HH24:MI:SS’) 将字符串按照指定格式转为日期
如果是如下格式,即有不是数字、字母、符号,是不能转换的,要用就得加双引号,有时候有些符号都不可以,如果有这种问题,就将这些字符都加上双引号
TO_DATE(‘2020年01月01日 14:22:22’,‘YYYY年MM月DD日 HH24:MI:SS’)
改为
TO_DATE(‘2020年01月01日 14:22:22’,‘YYYY“年”MM“月”DD“日” HH24:MI:SS’)
TO_CHAR
将日期按照指定格式转为字符串
TO_CHAR(SYSDATE,‘YYYY-MM-DD HH24:MI:SS’)
与TO_DATE()刚好相反,这两个函数使用频率都很高
LAST_DAY
返回给定日期所在月份最后一天的日期。
SELECT LAST_DAY(SYSDATE) FROM dual
1
ADD_MONTHS
返回给定日期加上指定月份的日期,为负数则减去指定月份。
ADD_MONTHS(SYSDATE,12) 表示一年后今天的日期
MONTHS_BETWEEN
MONTHS_BETWEEN(DATE1,DATE2)
返回给定日期的相差月份
NEXT_DAY
NEXT_DAY(date,i)
返回给定日期的第二天开始一周内的指定周几的日期
i表示周几,1-7分别表示周日、周一……周六
不是表示第二天
LEAST/GREATEST
LEAST(D1,D2)/GREATEST(D1,D2,D3)
求最小/最大值,参数可以多个,至少一个。
除了日期外,常用的数字也可以比较大小。
日期得计算
日期可以与一个数字进行加减法,相当于加上指定天数。
两个日期相减即为相差得天数
日期RR注意点
日期得默认格式为:DD-MON-RR
这里的RR和YY是不一样的,它是关注世纪的,如果将字符串转为年的时候RR是关注世纪的。
如果用户输入的时间是98年,也就是RR为98,即user为98,当前年份是2020年,即sys为20,根据上表的结果可知用户输入的98转为日期是上世纪的98年。
空值NULL
默认值
数据库表中的数据如果没有值就都是NULL
不能用=判断某个值是否为NULL
用 IS NULL/IS NOT NULL 作为判断依据
如果字段有非空约束即 NOT NULL 则无法将该字段的值设为NULL,新增,修改都无法操作
插入NULL
可以插入一条数据,将某个值设为NULL
分为隐式插入和显示插入
隐式插入即为不写该字段,他就会是默认值NULL
显示插入即写出该字段,将该字段的值设为NULL
修改NULL
可以将一条数据的某一个字段的值改为NULL
例如:
UPDATE A SET GENDER=NULL WHERE id=1
1
NULL值的运算操作
NULL与任何数字运算的结果还是NULL
NULL与任何字符串拼接还是原来的字符串,表示什么都没做
空值函数
NVL(A,B)
当A为NULL时,函数返回B
当A不为NULL时,函数返回A
即,将空值替换为一个非空的值。
NVL2(A,B,C)
当A不为NULL时,返回B
当A为NULL时,返回C
该函数根据A是否为NULL来返回不同结果
————————————————
版权声明:本文为CSDN博主「Andy-ZhangSir」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41404112/article/details/106521096