00:00
来我们先看第一个啊,第一个函数呢,叫做NVL,这个NVL大家之前有没有用过。用没用过?可能有的同学学过,有的同学没学过是吧?来应该学过啊,来咱们回忆一下这个函数怎么用啊,来看一下这个函数呢,我们去使用的时候呢,需要给它传两个值,两个参数,对吧?啊参数一参数二,那它的逻辑应该是什么呀?逻辑就是说它会先判断你的表达是一是否为no啊,如果表达是一等于no,那我就返回谁返回表达是二,如果表达是一不为呢,那我就返回谁表达是一,对不对,呃,它就是这样的一个逻辑啊,就是这样一个逻辑啊,那所以说这边呢,有一个这样的要求,就是咱们这个函数我是不是要么返回表达是一,要么返回表达是二啊对不对,那所以说这边有一个要求,就是我们的表达是一和表达是二的数据类型呢,咱们要求的是,哎,相同的类型对不对,相同因因为什么,你得保证你这个函数它的返回值是不是得是固定的类型啊,对不对啊,它所以说要求它俩是同一个类型。
01:04
OK,那现在咱们回忆一下啊。我们前面所有的搜索当中,有没有地方可以用这个NVL啊。有没有?其是有啊,其实是有的啊,哪有啊,你像我们昨天写的那种,比如说谁我们找到那个DWD层啊,找到DDCTRLF。我搜一下啊DWD。Fact啊,找到那个,呃,Older in,就这。Older下颚线等in来往下翻来,咱们就去看这。你说你像这种位置能不能替换成NVL。看行不行啊,你看这个逻辑是不是一样的啊,你看啊,它这是不是判断new的ID是不是为now,如果new的IID为no,那我就返回old的,否则我就返回U对不对?那说这个东西咱是不是正好就可以使用NVL啊怎么用啊,你看啊,是不是就直接NVL,然后呢,new.id o.ID。
02:10
哎,是不是一样的,你看他俩逻辑是不是相同啊,咱们看一下来。这个下边这个NF函数的逻辑就是哎,判断new.id是否为no,如果不为no就返回它,为no的话就返回它,你看跟上面是一样的吧啊,那所以说你像这些东西咱们都可以使用NVL给他去使用啊,都可以使用NVL啊,那这块呢,我们就不再一个一个替换了,后续呢,咱们再有类似的这种写法,我们就直接使用NVL了啊当然NVL了,可能大家如果用的不多的话,可能这么一看的话啊,就是没有这种if是更直观对吧,没有if更直观啊呃,当然你使用熟了之后呢,你上来之后,你首先想的应该就是NVL啊,就是这种位置上来就NVL啊,后续呢,我们呃会有类似的这个写法,还会还会有,那到时候我们就直接NVL了啊好,这是关于它,那下边看还有没有其他的啊,下边呢,有几个这个日期的处理函数。
03:07
啊,日期的处理函数,呃,这个对于日期的这个处理呢,在我们平时做需求的时候呢,还是比较常见的啊,还是比较常见的啊,尤其是涉及到一些什么呀,涉及到一些日期的格式化呀,呃,包括什么日期和那种时间串之间的相互转化呀等等的,还是比较多的啊,还是比较多的啊,所以在这呢,我们大家呃,需要去把这几个日期函数呢,都得了解了解啊,都了解了解,那看一下咱们文档上给咱们列出来的有几个啊,首先第一个date format date form ma函数是不是就是做日期格式化的呀,那咱们之前已经给大家使使用过这个函数了,对吧?所以说这呢就不再重复了啊呃,看一下它这个小例子吧,看一下吧,它这小例子在干什么呀?把这个日期格式化成YYY,然后杠MM是不是把那个日去掉了呀,返回的就是2020杠零六,这应该能看懂吧?啊OK,这个不多说了啊,看下一个。
04:00
哎,Data ID和data sub函数,这个函数咱们也用过了啊,是不是啊,那这个函数我们去使用的时候呢,我们需要给它传俩参数,第一个参数是日期啊,那第二参数呢,是一个int值,Int值可正可负对吧?啊,可正可负,那这个就是对日期进行一个加减啊,这很简单啊,看一下例子啊,614减一就是613 614加一就是615对吧?啊不多说,然后看下一个,这呢有一个next day函数。啊,Next day,这个next day呢,在这指的是什么啊,来我们看一下,看一下这个例子吧,咱们看这个例子,然后再给再给大再给大家解释这个函数它的作用啊来看一下咱们这个nice day呢,是不是传来俩参数啊,一个参数就是一个日期,那第二个参数呢,是一个什么?Mo Mo是啥呀?啊,其实Mo在这呢,指的是周一,也就是第二个参数呢,我们传的是周几啊,传的是周几,那当然你得写英文啊,那英文考虑大家这个英文可能已经啊好长时间不用了,对吧?所以把这个周一到周日的这个英文单词都给大家列出来了啊Monday Tuesday Wednesday Thursday Friday Saturday Sunday,对吧,这应该是周一到周日,然后大家要注意啊,我们往这个函数当中去写周几的时候啊,第二参数,咱们写的时候一定得注意啊,认真听,咱们这只能写什么呢?只能写两个字母,就是前两个字母,或者是前三个字母,或者是全称,只能是这三种写法。
05:29
法啊,前俩前俩字母,前三个字母或者是全称啊,其他的都不行啊,只能是这三种写法,把这个记住啊,把这个记住啊,别的它不能识别啊好,这就是这个函数的一个用法,那这个函数你这么传参之后,它返回值应该是什么呢?看一下啊,是不是传了一个614,然后呢,传了一个周一,然后呢,返回的是615对不对啊,这个到底怎么回事,你其实可以看一下日历啊,我们找到614,你看一下啊,往上翻,你看日历是不是就行,来往上翻,往上翻来找到614,这是不是614对不对,然后呢,我传了一个是不是一个周一。
06:08
啊,这是不是周一,然后返过去是什么,是615。哎,大家可以根据这个东西就能猜测一下这个函数的作用是什么哈,来没错,这个函数你这么写的话,它的作用就是返回6月14号他的下一个周一,因为是next对吧?哎,下一个周一的日期。没错吧,6月14号下一个周一是不是就是六月15啊,那如果说你传的是614,然后呢,这儿呢,传的是周二,那就是616呗,啊是这样的啊,也是返回呃这个日期的,然后下一个周几的日期。啊,就是这么去使用啊,这是next day这个函数的作用啊好,那咱把这搞清楚,然后再往下翻。下边这呢,呃,有一个小例子啊,就是取当前周的周一,那这个单先别看啊,这个不要看啊,把这个给你干掉啊,来那取当前周的周一。
07:03
啊,当时日期啊,也就是当前周周一的日期是多少,这个应该怎么求啊。怎么求啊?大家不要看啊。这个那函是下周一对吧,是下是下周的对不对,那我我这个我要求的是当前周也是本周。比如说咱们今天呢,就是六月,呃,比如今天就是10月23号吧,啊,那我要求10月23号所在周的周一的日期。啊,这么久。哎,没错啊,这很简单啊,你可以先用next day函数求出来十十月23号它下一周的周一的日期对不对,然后呢,再使用data I的函数,我data s函数是不是再减个七就行,那你得到的是不是就是本周的周一日期了呀,就这么去使用呗,啊嵌套一下就行啊啊这个不再多说啊,然后看最后一个最后函数呢,叫做last day。Last day。拉塞代尔指的是什么呢?它所返回的结果是,哎,某一个日期所在月的月末日期。来举个例子,下边。
08:10
Last day,然后呢,2020614,那他所返回的日期应该是什么呀?应该是六月30对吧?啊,那如果说我是二月份呢,那比如说2020年2月14号,那你反过来应该是什么呀?2020年2月啊,你得看它是闰年还是啊这个非闰年对吧?啊,如果是闰年就是29啊不是闰年就是28对不对,是这样的啊,所以大家呢,需要呃把这个呃拉函数也得搞清楚啊,这就是我们啊在这给大家列出来的几个日期处理函数,这些函数呢,我们后续还会用到啊,后期会用到啊,那这里边的函数呢,并不全啊并不全,我们还得需要一些啊这个日期的处理的一些其他的函数啊,比如说什么呀,比如说我这个呃,从一个日期啊,年月日这样的一个字符串,我比如说我转成时间串,我怎么转。对不对,那再一个呢,我从一个时间窗,我转成这种年月日的日期,我又应该怎么转,对不对啊,那像这些东西呢,都是我们大家在工作时候可能会遇到的东西啊,那哎,给大家在普及量函数吧,那就关于这个日期和时间串之间的相互转换啊,那比如说我现在呢,想把一个呃日期转成时间窗,那应该用哪个函数呢?
09:21
看我这连上没有啊,咱们连一下啊。Accept。嗯,应该是什么函数呢?我们这有个这样的函数叫做select啊什么呀,Unix time step来UN,嗯,Ix unix time step这个呢,就是什么呀,就是将将什么将一个日期转换成。什么东西时间串呗啊原时间串,然后呢,CTRLP,你看它需要传的参数是什么啊,首先你传的是不是就是一个哎date呀啊一个日期啊,那我们给他传一下啊来比如说我把这个谁传进来,2020杠零哎六杠幺四来来咱们看一下这个能不能返回一个实验串来模你走。
10:07
诶,它返回的是一个闹对吧?呃,返回来是一个闹,那这边呢,应该是我们需要给它做一个呃,格式化,我试一下啊,我看能不能格式化一下来,我们把这个YYYY啊,然后杠MM,然后杠DD啊,我看一下啊走。嗯,哎,这回就行了啊,就是说你需要给它指明一下什么东西啊,不需要指明一下这个,呃,咱们这个呃日期啊,对吧,日期的格式啊,因为什么,因为默认情况下这个东西啊,呃,它应该是呃是将一个那个呃datetime类型的一个字符串转成一个实间串,也就是它默认的这个日期格式呢,是datetime,也就是也也就什么样的,应该是年月日,然后呢,十分秒,然后咱这是不是没有十分秒啊,没有十分秒,那咱们是不是得告诉他,我就是年杠月杠日的这个格式啊,需要给他指明一下啊,指明一下那这个它就能够正常的识别了啊,这是这是select UN time stamp OK,那现在呢,我假如说我现在又想怎么样啊,又想将这个时间圈再转换成一个啥。
11:11
再装一个啥,再转换成一个这个,呃,字符串对吧,你要是一个字符串,那你说这个又应该怎么转换呢。啊,是不是得再来另外一个函数了呀,那函数叫做哎,From啊,这个unix time step,这是将unix time STEM转成一个字符串,比如说这个是不是就是一个时间串,那咱们把它COPY1下来,我给它放到这里边来啊,你看它能不能转换成功啊来咱们试一下走。来,你看它是不是就转换成这个,呃,2020杠零六杠幺四了呀,当然它转换成这个格式,默认也是这么样的呀,默认也是。年月日十分秒的,那所以说你这个要是想获取年月日,你还得对他进行一个啥呀,是不是他也进行一个的话呀,对吧,也就是说你这样呢,需要再给他是不是也得再传一个参数啊,什么参数,也就是啊这个YYYY,然后杠大M大,然后杠DD对不对来走。
12:08
是不是就可以了呀,是这样的啊啊也就是说这个,呃,从unix啊,这个他们三面就是时间串和咱们这个时间字符串之间转换的时候呢,那咱们这默认的这个日期的这个字符串应该是什么呀?应该是datetime类型,就是年月日,它会默认有十分秒的,如果你这有十分秒,那你是不是就不用再传这个东西了呀,如果没有十分秒,那这个东西是不是都得传呀?啊是这样,大家把它记住就行了,这是关于呃,时间字符串和这个时间串之间相互转换的一个函数啊啊那当然除此之外呢,还有很多很多的函数啊,比如说两个日期进行加减。啊,那咱们这有这个,呃,一个日期跟一个认in的值进行加减,对吧,那么还有两个日期进行加减的这个这种场景呢,比如说啊,我这个十二十月10月23号跟这个8月27号,他们之间差多少天,那这个应该怎么算呀,哪个函数是也有一个叫做date。
13:05
Di这样的函数啊啊,这是对两个日期进行这个加减操作,比如说先把第一个抄进来,2020杠诶零七杠幺二,你随便写吧,然后第二一个呢,哎2020杠哎零五杠哎幺二对不对,那你这这时候呢,你执行这就是两个日期进行下去,它的返回结果呢,是一个int值。能看懂吧啊就是类似的函数还有很多很多,呃,这个咱们这在这呢,就不一一列举了,大家可以怎么去哪看呢?是不是在它官网上你就找到那个have,哎,Functions funs啊来你找到它官网的那个呃帖子,哎就在这诶不是在这啊呃哎在这儿呢啊啊你就点开它,那这里边呢,就有它所有的这个那个内置的函数啊然后呢,大家把这里边啊相应的函数呢,没事的时候呢,你就都都去看一看啊,就是以后呢,难免会用到哪一个啊,你提前看一看,是不是都了解的比较多呀,后续有场景你能想到去使用它是这样的,这里边函数还是比较多的啊啊这个咱们呃就先说到这儿,这是关于哎,Have里边几个比较常用的日期函数啊。
我来说两句