Oracle中日期以及“转义”问题

说明

最近有点忙,前两天考了一门课的期末考试,一直没写博客。今天在用oracle的时候遇到两个问题,记下来,不然总是忘记。

1、日期问题

问题:怎么找到数据库中某个日期在某个范围的数据?
可以思考一下,大于某个日期用‘>’号,小于某个日期用‘<’号,在两个日期之间用between。但是怎么比较日期呢?
解决方法是将我们用来比较的日期字符串转化成日期,也就是说我们用来比较的是字符串,我们需要转换为日期,同个类型才能进行比较。那么需要怎么转化呢,可以使用下面的函数。

to_date(‘日期’,‘日期格式’) 

例如下面的语句:

create_date>to_date('2019/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss')

指创建时间在2019年之后的,所写的日期中用到的日期格式要与日期格式一样,不然会有出现格式不匹配的错误。所以如果你只要比较到日期,不要求时间,那需要这样写:

create_date>to_date('2019/01/01','yyyy/mm/dd')

如果你日期分隔用的不是斜杆,是横线,那格式也要换成横线

create_date>to_date('2019-01-01','yyyy-mm-dd')

另外,我们除了将字符串转化为日期之外,我们还可以把日期转换为字符串,可以使用to_char()这个函数,这里不详细说明,我找到一个博主写的很仔细,可以看一下:
http://blog.sina.com.cn/s/blog_46ca17bb0102xda8.html

2、“转义”问题

下面是“转义”问题,我这里的“转义”指的是我们数据库中用某个简单字符串代替某个具体情况表述,例如数据库中有某种产品,我们需要有一个产品状态,例如我们用1表示“有货”,用2表示“已售空”,3表示“缺货”。我们在数据库中当然使用1,2,3来记录比较方便,但是当我们想查看的时候我们没办法看出状态,这就需要“转义”了。
往往数据库中有一个表是用来记录对应的值的,就像key和value的关系一样。但是你不一定知道这个表在哪里,而且可能这个表里不只是记录产品的状态,还记录了其他的状态,找起来很麻烦。如果你知道1,2,3分别对应什么值,那就比较简单了,可以使用下面的函数

decode(需要转义的字段,'值1','对应的描述1','值2','对应的描述2','...','...','如果找不到对应的值,默认的值')

例如下面的例子:

select decode(status,'1','有货','2','已售空','3','缺货',status)  from product

这就是表示如果status字段的值是1,显示“有货”;值是2,显示“已售空”;值是3,显示“缺货”。这样就比较方便。
这个也可以用来替换掉空值

select decode(status,'','null')  from product

写完,撒花❀❀❀

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值