Oracle中日期和空值操作

前言

这一篇是最后的一个过度篇幅,主要涉及日期和空值操作。

日期关键字

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

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

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来返回不同结果

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值