00:00
好,同学们啊,这一节呢,再给大家介绍两个数据类型,一个呢叫做time时间点啊,另外一个呢叫做duration Du表示持续时间或者时间间隔,好呃,接下来呢,我们来敲这个代码。首先呢,我去说明一个变量,就叫A。啊,然后我们去敲一个时间,比如说呃,2022年的。9月29日。然后时间呢,就是。呃,早上的05点。十分零零秒。写一个敲一个大Z好啊,那么这里呢,你可以看到我写的这一个这一串东西啊,其实叫做RFC3339。格式的日期时间。
01:05
呃,那么现在呢,我们可以去提交一下这个脚本,点击点击这个submit。好,可以看到呢,这个字段的类型叫什么。呃,是不是did time r FC 3339,呃,这这个呢,实际上是我们in Fla DB内部支持的一个数据类型啊,也就是我们确实可以通过这种方式呢去存储时间。另外呢,我现在这一个日期时间呢,它的精度是秒啊,这是小时,这是分,这是秒啊,除此之外呢,我们还可以再加一个点,想办法呢去表示毫秒,比如说001。哎,点击submit,你可以看到这里面显示的啊,实际上就是毫秒级的一个啊日期时间的表达,我现在呢,点击submit,我先我先不点击啊,我先截个图。现在是不是点000啊好。
02:00
点击提交可以看到呢,现在就是点001啊,那么这里面呢,就是我们flux语言的time类型的用法啊,这就是time类型啊,那么现在呢,还有一个类型叫做持续时间,我可以先给大家看一下它的声明方式,比如B等于2H啊,你会发现呢,我们没有报错,而且这里呢啊是一个蓝色的特殊标记。可以说呢,这呢,其实就是一个数据类型表示啊,一个正向的时间段啊,那么这个类型呢,我们之前呢,呃,在文档里面看到过,我们回来看一眼。啊,在这个最简事例里面。啊,我们可以看到。当我们对这个数据库进行查询的时候呢,有一个R函数限定了我们查询的时间范围啊,它这里呢,有一个start冒号负1D,这个意思呢,就是从现在的时间往前数减去一天。好啊,那么这就是我们的一个持续类型啊,持续时间的类型,那么现在呢,我现在尝试让这个A和B呢给它加起来,这里呢要用到一个函数叫做date.a。
03:12
好,也可以看到呢,这里import没有帮我补全自己呢,动手补上。呃,然后点击括号啊,输入括号,呃,首先呢,有一个参数叫做D。D就是duration的意思,然后把这个B呢,给它传进来,把这个B传进来啊,然后呢,还有一个参数叫做to。也就是哎,把谁谁谁加到谁谁谁身上啊,现在呢,我们声明了一个时间叫做A,我们把这个to呢,参数指定为A,好,最后的返回结果呢,我用一个变量C把它接住。此处呢,我们展示一下C。哎,把这个C传进来。点击submit,把这个拉高一下。好,呃,大家可以看到我这里面呢,呃,这个时间点啊,给定的是2022年9月29日凌晨五点啊,那么加了两个小时之后呢,大家可以看到这里面的返回结果是多少。
04:11
是不是9月29号的凌晨七点呢,早上七点啊,现在呢,我们可以再看一下,我如果把这个地方呢,改成一对。ED啊,D就是D的简写,D的简写,但是我们这里呢,只能用简写。好,再次点击上。哎,可以看到现在时间变成什么了,9月30号,哎,另外呢,可以告诉大家。这个dation的类型呢,它支持啊连着写,比如说啊,我说一天又十小时,那么一天是吧,ED再写一零再写鱼翅啊,那么这就是一天又十小时,现在再点击submit啊,注意啊,现在是9月29号的五点点击submit。我们可以看到现在是多少呢?现在是9月30号的15点,也就是加了啊加了一天又加了十小时,除此之外呢,我们还可以把这个呢变成复数。
05:07
啊,我们现在是沿着日历啊向未来的时间,我们过去呢,是沿着这个日历向未来的时间呢,加上这个时间段呃减呃加上一个负数呢,就表示呢,是在呃29号的基础之上往前啊沿着日历往历史的这个方向走,呃走上一天十小时,点击萨看看效果。啊,可以看到呢,呃,这个9月29号的凌晨五点呢,减去一天又十小时呢,就是27号的晚上七点。好,呃,那么这就是我们呃,时间点和持续时间的一个结合性的用法,接下来呢,给大家再单独介绍一下我们的这个持续时间。呃,持续时间呢,我们可以把这个B传到这个表里面来看一下,呃,点击submit。好,那么这里显示呢,我们不能去创建一个啊duration类型的列啊,不能把这个duration当做一个类型啊,说明呢,这个duration呢,其实是我们flux脚本里面支持的一个类型,而不是我们in flux DB里面啊支持的一个存储类型。
06:10
而且呢,我们之前在讲in DB航协议的时候呢,也没有给大家讲过持续时间这种类型。好,呃,另外呢,就是给大家可以看文档。呃,这个持续时间呢,其实它不仅支持我现在写的这个天,还有小时啊,它支持很多的这个数据范围啊,比如说日历月啊,我可以加一个月啊,小写的M呢表示分钟,比如这呢就是加一分钟,现在是05:10,那么点击萨啊,首先呢,还需要用C啊给它接住一下,稍等我把这个撤撤回来,好,现在呢,我把这个持续时间呢改成一分钟em。点击萨米特。好拉,拉高一点。啊,可以看到呢,现在就是05:11啊,那么月呢,就是Mo啊,月是Mo,点击一下submit,哎,可以看到现在是哎10月29号,而且呢,这个月份呢,是按照日历来走的,我们现在可以把这个啊日期呢改成1月31号啊在1月31号基础之上呢,我们让它加一个月看看呢会展示什么。
07:22
点击submit。好,你可以看到你得到的呢,是二月的最后一天,2月28号。现在呢,我再把这个时间呢换成30号看看效果,点击submit。啊,可以看到呢,也是2月28号,所以说呢,这个月份它按日历走呢,就意味着这个月呢。哎,一个月呢,不一定是30天还是31天,还是28天啊,所以说呢,要理解日历这个概念啊,接着呢,回到文档。
08:00
啊,这个剩下的这个周,包括这个毫秒微秒纳秒啊,这些就不给大家讲了,包括这个年呢,它也是按照日历走的啊,知道就行了。然后呢,我们再说一下,就是类型转换的问题。啊,如果我现在呢,有一个示,比如说我现在把这个起一个新的变量叫C啊,然后这个C这个变量呢,里面是一个表示持续时间的。哎,字符串一小时一分钟。啊,我现在想把它转成持续类时间类型行不行呢?答案是可以有一个叫做的函数。好呃,点击呃输输入括号,然后传递一个值V,呃,现在呢,我们把这个呃时间呢直接给它传进来,把字符串传进来C。然后我用一个变量D把返回值接住啊,传到我们的表里来,好,点击submit。啊,可以看到呢,这个类型呢,他说啊,不能这个展示啊,是因为我们现在呢,这里面已经是持续时间了。
09:06
呃,我想想怎么办啊,我可以给它展示成display是吧D。然后输入一个V。啊,再次萨米特可以看到呢,这里面是呃,一小时一分钟,不过呢,它是字符串啊,我想这里可能是给它做一个时间运算是最合适的。啊,我们直接用date a date.a。啊Du呢,就是我们之前声明的D,呃,然后这个呃,另外呢,就是to two这个参数呢,应该传递我们之前啊声明的A好。啊,用这个另外一个变量,用这个E把它接住,然后呢,转到我们的表里来。好点,Some me。好,可以看到呢,这个是原来是05:10,现在加一小时一分钟呢,就是06:11,而这个持续时间从哪来的呢?啊,是我们的字符串转过去的啊,那么除此之外呢,我们的整数也可以转成持续时间。
10:09
啊,那么这里呢,需要用这个整数呢,去指定一个时间范围,比如说我现在C。哎,等于,呃,现在这个我可以,我可以先给大家说啊,这个整数表示的呢,是我们的纳秒,就是有多少个纳秒,比如说我输入一的话,待会转换riration呢,就变成一纳秒,哎,那么这里啊,我要加上1000的话,大家算一下啊,是1000纳秒。啊,1000纳秒呢,相当于一微秒啊,再乘1000,这呢相当于一毫秒,再乘1000,这呢相当于一秒啊,再乘。60相当于一分钟,再乘60相当于一小时,再乘24啊,这就相当于24小时,相当于一天了。啊,那么现在呢,把这个C呢,可以看到还是转成direction,然后呢,用date.i把这个啊,我们转成的这一串和这个时间点呢加起来。
11:08
我们看一下呢,会返回什么,点击submit。好,可以看到我现在是1月30号的,呃,05:10,呃,经过这一串儿相加呢,啊,我现在这个时间呢,变成了1月31号的05:10多了一天啊,那么说明呢,这种方式也是可行的。好啊,那么这个持续时间呢,就算是给大家给大家讲完了,现在呢,我们要深入的讲一下这个time时间点啊,除了我们这样在编程语言里面呢,显示的声明一个time啊,我们还可以通过一个叫做na的函数来获取当前的时间点。啊,此处呢,我给他一个变量叫做B,然后呢,这里给一个value,哎,把这个B呢,传到我们的表里面来。点击submit。啊,可以看到现在呢,是零时区的,2022年9月28号晚上九点,也就是我们当前的五点,再往前呢,推八小时啊,就是9月28号的,诶,晚上九点钟,好啊现在呢,在我们的右边搜索date data可以看到呢,这里有很多哎关于日期的函数。
12:14
呃,现在呢,我们可以用一个,比如说我们使用这个date。点hour。好,试一下啊。Or,然后呢,这里面需要参数啊,这个参数呢叫做T,然后冒号,呃,此处呢,我们就直接把now传进去,好当前的时间这个na呢,记住要加这个小括号调用一下。点击submit。哎,可以看到我们之前呢,说这个na是多少来着,是哎是21点,那么现在呢,其实我们就把那个日期时间对应的小时给提取了出来。啊,可以看到现在呢,我们这个类型啊,类型做的long这里呢,可以给大家剧透一下,这个long其实对应的我们flux语言里面呢,啊,就是int类型。
13:02
呃,这里呢,我输入一个int类型,直接打个数字写个一。写12顶萨米特。呃,可以看到呢,这个地方写的浪,那实际上呢,在我们这个,呃,编程语言里面呢,属于int int类型。啊,也就是说我们的date.r这个函数呢,返回的是一个int类型。啊,是我们这个小时的一个数值。好,再试一遍,可以看到21。啊,那么这里面呢,还有很多啊,还有很多这个对的函数啊,需要注意的一个问题是我们之前的我写下一小时。呃,我们之前的date.i这个函数呢,在在我们这个右边这里,你可以看到没有出现。而且我们的编辑器呢,也一直处于一个报错的状态啊,这个地方呢,还是要相信我们的文档,文档里面呢,说有date点艾这个函数,那就是有啊,那么这个里面没有呢,其实是因为我们的web UI呢,没能跟上我们Fla语言的一个更新,所以呢,写程序的时候呢,还是要大胆。
14:10
好,呃,最后呢,说一下我们平时用Java语言或者什么编程语言啊,去这个呃,获取时间相关的一些操作的时候呢,通常是操作时间戳,呃,我可以看下是什么是时间戳,比如说这个us里面有一个时间戳的插件。啊,这一串整数呢,就是时间戳。呃,那么很有可能导致我这个往里插的时候呢,某一个字段是时间戳,等到处理的时候呢,我又需要转成time类型啊,以便我支持一些flux语言里面的操作。啊,那么这个时候怎么办呢?有一个函数叫做time。T,然后呢,它里面支持一个参数叫V,我们把这个时间戳传进去,但是呢,要注意这个参数要接收的呢,它是一个呃纳秒级的时间戳,但我这里的时间戳呢,是一个毫秒级的啊,所以说我要乘上两遍1000。
15:06
啊,先换成微秒,再乘以千换成纳秒,然后呢,我这里用一个变量B把它接住,好点击提交submit。可以看到现在呢,我这一串啊,这一串啊,这个乘法出来这个整数它呢就转成了一个time类型啊,那么对应的一个相反的操作呢,就是把我们time的转成时间戳啊,那么这个函数呢,要用到一个叫u int的函数,好,那么这里呢,需要传入一个V,此处呢,我们就把A传进来。然后呢,我们还是要要用一个变量,现在呢,我先把上面这个注射掉。好,然后用B呢把它接住。点击submitit看下什么效果。点击提交。好可以看到呢,其实现在啊,现在出来的就是我这个2022年1月30号对应的日期时间的时间戳啊,就是它啊,我们可以复制到我的这个工具里面去转换一下试试。
16:08
啊,此处呢,我把这个呃时间戳呢给它粘上。啊,因为现在呢,他说这个是无效时间,是因为我这里呢,啊是一个纳秒级的,所以说我需要先去删掉三个三个零。再删掉三个零。哎,可以看,可以看到现在出现的这个时间戳呢,呃,日期时间就是2022年的1月30号下午一点钟,这对应的是北京时间。啊,那么对应我们的这个零时区的时间呢,就是13再减八,哎,刚好呢,就是05:10,那么这个u int的函数呢,其实是得到一个无符号整数啊关于无符号整数呢,我们马上就会讲到,好,那么关于时间和持续时间的知识呢,就给大家讲到这里。
我来说两句