00:00
那在讲完数值的这个类型之后啊,咱们接下来看一下这个日期和时间的这个类型啊,咱们知道呢,对于数据库来讲,这个我们这个相应的你这个不同的业务,然后我们去存储这个日期,存储这个时间的场景啊,还是比较多的,那便于呢,我们后期呢,进行数据的查询统计和处理,对吧,这个大家应该是能理解这个事儿的,那么我们关于这个表当中存储这个日期和时间具体有哪些数据类型啊,诶大家来看一下,在MYSQL8.0当中啊,我们支持了这样的一些类型啊,那其实呢,5.7当中啊,主要的也是这些类型。分别对应的有什么呀?有这个叫year啊,Year呢,这个比较特别,它就只存一个年。只存个年,也没有这个月日也没有十分秒啊,非常的单一,所以呢,它的这个字节数呢也非常小,只有一个字节那就可以了,然后呢,这个date和time呢,分别是用来存储年月日,这个呢,Time呢就是存储这个十分秒的,那么接着对应的叫date time和time stamp呢就是都包括了年月日和十分秒,但是这哥俩呢,也有所不同啊,一会呢,我们收到的时候呢,再详细的去介绍一下,那么先整体上呢做一个说明,这个页的话呢,它只有一个字节。
01:10
表示的话呢,就是四个Y或者是两个Y那都可以,那这里边推荐呢,我们用四个Y啊,一会儿呢,咱们展开的去说一下这四个,那这五个,那么这个一呢,因为它只有一个字节嘛,咱们说一个字节呢,是不是一共呢,能表示的也就256种情况呀,所以说这块呢,关于这个页呢,你看它这个存储的范围呢,那其实这块呢,就受限于它只有一个字节这样的情况。那这块你看它表示的年份就是比较有限了,那如果说呢,这个1901年之前的,我们就没办法去用这个year呢来表达了,是这意思吧,好,那么下边这个time的话呢,它是占三个字节,Date呢也是占三个字节,它呢就是时分秒,这个呢叫年月日啊,都比较好理解,这个年月日这块呢,你注意它是从这个1000年的1月1号到九九九九十二月零三号,那挺特别到零三号是吧。
02:00
然后上面这个time这块的话呢,大家注意到。说你这个哥们呢,这表示的是十分秒,那一天呢,不就24小时嘛,咱们这块整的这个负数还负的还挺多,是这意思吧,那挣的还挣的挺多,你比如说我们正常理解呢,应该是23小时,这个59分59秒是吧,但你发现呢,这个数很大,哎,为什么呢?诶因为我们这个time的话呢,它除了来表示我们一天的这个时间之外呢,它还可以呢,表示一个时间间隔。就是说我们这里边儿呢,实际上是可以包含几天的,那你填的话呢,那一天是24小时,好几天不是加在一起就可能会超过24小时的,那就是这样个道理,一会我们再展开去说,然后这个datetime跟这个time step的话呢,主要明显的区别呢,我们会发现呢,他们二者的字节数呢是不一样的,那字节数不一样呢,就导致了这个datetime的话呢,它实际存储的这个范围呢,是不是要远大于我们说这个叫time step呀。那大家你会发现那确实如此对吧,那我们这个time step它的特点呢,就是它存储的这个年月日十分秒的这个范围呢,是比较窄的,那我们说这叫世界标准时间,那具体呢,怎么讲啊,一会儿呢,我们去说这个事儿。
03:09
好,那先大家呢,对这个整体上有一个了解,那么下边的话呢,我们分别呢,去说一下这里边儿的几种类型,那以及呢,我们在开发当中,大家应该选择哪一种,OK,首先呢,咱们看一下这个页。这页呢,刚才说了它就占一个字节是吧,存储的空间呢是比较小的,那么在咱们这个开发当中啊,这个页,那我们说怎么去表示呢,它其实呢,也有两种这个写法,一种呢,就是用四个位的字符串,或者是四个位的数字来表示,就是YYYY。那那这个最小值呢,1901,最大值呢,215622155,刚才我们已经说过了,那你要用两位的这个呃,字符串或者是两位的这个数值去表示的话呢,那这块有点恶心啊,事儿还挺繁琐的啊,来咱们细节的稍微的看一下。怎么讲,那我们要是用两位的字符串啊来表示的话呢,那最小的两位不就是零零,最大的就是九九嘛,那么这块呢,你看还挺恶心的啊,大家看如果呢,你要是这个两位呢,是从零一到69,我还没包括零零啊,这零一到69的话呢,它表示2001年到2069。
04:14
2009,你看这个范围呢,是在我们这里边的是吧?OK,那你如果是七零,你看这个六九马上再加个数就变成七零了,七零到九九的话呢,它表达的是呢,1970年到1999年。哎,有这么个事儿啊,因为呢,我们大家如果有这个计算机的常识的话呢,咱们计算这个时间戳的话呢,通常呃,它是不是都是从1970年的1月1号开始算的是吧?诶所以这里边呢,一旦呢,你要是用到这个七零年的话呢,他就认为你是1970年了啊,你要六九的话呢,他就认为你是2069年。啊,有同学说这个事儿好恶心啊,呃,确实挺恶心啊,所以说呢,大家在开发当中啊,尽量呢,是不是我们不要用这个两位的这个字符串来表示啊,然后下边呢,其实也都说到这个事儿了,对吧,从五点五点这个二期开始呢,两位格式的这个页呢,已经不再推荐去使用了,也同学说我就非要用好,那你要是非要用的话呢,前提是你自己呢是很清楚这个事儿的,你要是又不清楚这事儿,你还非想用,这不是没事找事吗?
05:11
是吧,哎,这个清楚啊好,那么这里边儿呢,我们没有提到这个零零,那如果你要是取的是个整数零,或者这样写的话呢,它代表的就是0000年。如果你要是写的是这个带引号的这个零的话呢,它表示的就是2000年,你看足够恶心是吧啊。好,这个事的话呢,我们还是要提一下,为什么呀,因为咱们后边呢,像涉及到这个date,包括daytime time step,那有的用户呢,还是会考虑呢,就是写两位的这个YY,那你这时候呢,他遵循的规则跟这块呢是一样的道理啊,这块要注意一下。好,那下边的话呢,我们就诶针对这个页呢,咱们做一个简要的一个说明了,啊这呢,因为比较简单哈,就是理论上的这个事儿呢,我们一说大家知道了,下边咱们就只是做一个演示测试,好我首先呢还是在这个5.7当中,那咱们去说明一下咱们这里的这个问题,那这呢,我该是第六种情况是吧?哎,这个六的话呢,我们先来6.1,这个咱们呢,实际上这个year的这个类型,OK,好我粘过来,那首先的话呢,大家你会发现我此时呢,这个页呢,一个加了四,一个没有加四,好我们首先呢做一个执行。
06:15
执完以后呢,首先我们来一个DA,那test的一个页来,我们首先选中了做一个执行,大家会发现呢,我们没有指定这个是四的话呢,实际上它也是四。嗯,实际上它也是四,是这意思吧,那这里边就提到了,从这个开始呢,两位格式的就不推荐我们使用了,因为很恶心,嗯,然后呢,这个MYSQL8.0.19开始呢,这个不推荐使用,指定的宽度呢,是这个的格式的,因为呢,上面已经不推荐两位了,不是两位的是不是就四位的,所以我们之后啊,大家在定义的时候呢,你就直接这样写个页就完了,那默认的话呢,里边其实就是四位啊,就像我们刚才看到这样的一个场景一样。能理解这意思是吧?好,那么接下来的话呢,我们是不是就可以往里边去添加这个数据了呀,那添加这个数据的话呢,大家你注意它的一个范围,它的一个情况,呃,首先的话呢,我们提到了大家标准的去这个填,填的这个方式呢,就是老老实实的去写这个四个位的,四个位的话呢,你可以是带引号的,比如说2021年是吧?诶这是一种场景,然后逗号一下,我加一个这个小括号,我202。
07:20
嗯,二二年吧,那这样写的,我们看看是不是都OK啊,选中执行。啊,这个嗯,我哦,我这写了两个字段是这意思吧,那这块我们就选一个F1吧。因为这两个实际上是一样的,对吧,好,那我这边呢,选中以后呢,做一个执行那就可以了,来我们首先来一个select。哎,行,来from一下这个test year,哎,我刚才说呢,这两个字段是一样的,指的是它这个位数是一样的,我们就拿其中的一个来测试了。好,这时候大家会看到我们这个数据呢,是不是就填写正常的没有问题,好,那刚才呢,我们看到它这个数据啊,它有一个范围是从这个1901啊,这时候我们稍微的盯一下到2155,那你是不是不能超出这个范围啊。
08:02
来回过来,我们做一个这个测试啊,Insert into,我们还是呢,往这里边儿去,这个添加了啊,CTRLC一下。这样对吧,然后VALUE6的话呢,它是最大的叫2155啊,建议呢,大家以后写的话呢,关于这个日期类型呢,你就老老实实的加上这个双引,加上这个单引号了,像这种写法呢,实际上它有一个隐式的转换对吧?哎,建议呢,你就标准一点,那2155这个值呢,实际上是能够添加成功的。是这意思吧,来我们做一个分号的结束啊,选中执行,你看这是成功了的,那我们再CTRLC一下啊,我在下边啊,这个我把它改成215是不是六啊,来我们选中再执行,这时候是不是就out range了,那表示呢,就是现在呢,已经超出了它的这个范围啊,我们执行一下这个215,那是可以的。OK是吧,好,然后的话呢,我们说到呢,这个两位的这个存储的话呢,它也是有点这个事儿来我们CTRLC一下啊CTRLV那两位这块呢,我们提到了,如果呢,咱们写的是六九的话呢,它存储的是不是就是2069年对吧?哎,我们逗号一下,我再来一个,嗯,我写个七零。
09:07
那这时候呢,是不是就1970年了,哎,选中我们再去做一个select。啊,大家会发现是不是2069年,这个是1970年。没问题是吧,好,我再CTRLC一下。还提到了一个呢,如果我们填的是这种,呃,数值的这个零跟这个带引号里边的这种零零,哎,我们看看这个区别啊,走一下来我们再去做一个select。啊,执行好,这个零的话呢,你看它指的就是0000年,这个零零的话呢,指的就是2000年,你看这个还挺恶心的,所以建议大家呢,你就不要这种写两位的这种情况啊,你就用这个四位的这个YYYY来去写啊,这是非常标准的一种写法。啊,一种标准的写法。那么关于我们这个页这块的话呢,其实咱们想给大家说的呢,也就这些啊,希望大家留下来的这个结论是什么呢?就是咱们就写思维的啊,那如果说呢,你要是想起呃,关于两位的这个情况呢,稍微了解一下,咱们后边这个当中呢,凡是涉及到了这个年的情况呢,都可以写成是两位的,那这个两位的这个情况呢,跟我们刚才提到这个两位的情况呢,实际上是呃一致的啊,知道这个事儿就行。
10:14
好,下边的话呢,我们来看一下,这个叫date类型。这个D的类型呢,你看这里边这个内容量哎也是有一些的,首先呢,它的标准格式,注意标准格式呢,四个Y2个M2个D,那M呢就是month d呢就是D对吧,年月日三个字节呢,来存储的啊,那么推荐大家的写法呢,就是这样子的啊,你可以中间加上这个短横线啊,你要不加的话呢,也行,它也能够自动的去做识别。啊,它会将这种格式呢,识别成这样的格式呢,去做个存储,最小值呢,就是呃1000年的1月1号,然后这是9999年的12月零,呃零三,那这一天在这个范围内呢,都是没有问题的,那如果说你要是这样去写的话呢,哎,那么首先说后边这个呢,也会转换成我们说标准的这种格式,那么这个两位的Y呢,这里边儿就遵循了零零到九九是吧这样个事儿,然后呢,七零到九九的话呢,是诶这样一个事儿。
11:06
能理解对吧,然后呢,诶,我们如果想表达就是咱们当前的这个呃年月日,那我们可以使用这个current date,或者叫current date啊,或者叫no,咱们前面不都讲过这个相应的这个日期时间的函数是这意思吧,好了啊,来我们这块呢,做一个测试。嗯,这块呢,我们是这个6.2是咱们讲的叫date这个类型,嗯,好的,那首先我们这块呢,创建一个啊,这个就是date类型了。没问题,行,那首先呢DEA一下啊,我们去看一下这个test的DATE1啊,这块我们选中做个执行,哎,这里就写个date了啊,它里边也不会加个小括号啥的了,哎,年月日十分秒嘛,是吧,三个字节。然后的话呢,我往里边呢,去添加这个数据啊,这块因为也相对来说比较简单啊,我就直接呢,咱们就这样CTRLC拿过来。好来说了,咱们说呀,标准的写法呢,建议大家你就这样就写了啊,你就说我这个标准的稍微离标准偏一点点呢,那你把这个中间的小短横线呢,可以去掉,就是从可读性上来讲呢,稍微的就咱们自己看哈,差一点不如这样的好,是这意思吧啊那这个呢,就相当于我就写成了一个数字这样类型的啊,其实也可以呢,做一个隐式的转换啊好,首先呢,我们这块呢,做一个执行。
12:21
啊,没有问题,哎,我这块呢,也是做一个select的查询。哎,Select星哎from一下我们这个test date1是吧,哎,这样。好,选中呢,我们去做个执行,那这呢就能看到了这个对应的这个事件啊,这是OK的,那接着的话呢,我们test这个DATE1啊,我这儿呢,就写了一些啊比较特别的一些场景,比如说呢,我们这个页呢,就是故意写成两位了啊,这是一个带短横线的,这是不带的啊零零的话,咱们说实际上是不是2000年啊。呃,这个呢是嗯,2069年啊,这个是1970年,那就这个场景啊,你看我写的挺多的,好,那我们把这个呢,选中做一个执行。
13:00
来我们再去做一个select,可能我们去查看一下,嗯,前面这三个之外的剩下这块啊,这呢,你看2000年的啊,一直到2069年啊,这206年这都没问题啊,七零年呢,就1970年的啊,这有两个,然后后边这个9999啊,这就1999年呗,哎,两个能理解是吧?哎,这个呢,大家做一个了解啊,不推荐这样去写。好,下边这块呢,就是我们纯粹用这个数字啊,这样方式来表示的,这时候你注意呢,它相当于有一个隐式的转换啊,转换成对应的我们上边这样的情况,这个呢就更不推荐了。来选中。哎,这块呢,再去做个执行。啊,这个我们就最后的这四个啊,在这儿2000年的3月1号啊,2009年,这个1970年,1970年没问题是吧,诶这块呢,我们说的是存在饮食转换。哎,这样一个问题,就是把我们这个数字类型,数值类型的转换成我们的这个,呃,这个叫日期类型的,好,这个呢是我们说的,呃,你添加到指定的年月日啊,那我们还可以啊,这个我就写到这吧。
14:02
In色的into,然后我们来一个values,我们是不是可以填写一下咱们当前的这个是吧?哎,把当前这个我们这个,呃,这个日期时间呢,我们给大家添加进去,那这个怎么做呢?呃,实际上呢,比较简单,是不是就我们用的叫current date这样一个函数,或者叫current date是不是都可以啊,啊没有问题,行,那我们这块呢,可以写一下啊,哎,Values我们叫current,哎,Data这是一个函数,然后呢,逗号一下,还有呢,叫current,刚才我们看到的这个啊,Data是不是这也是一个函数。然后还有一个no,这个no的话,你注意其实它里边呢,是包括了年月日和十分秒是吧,只不过呢,咱这里边儿呢,再去存储的话呢,它就十分秒呢就不要了。哎,所以你看我们这时候呢,再去select做一个查看,那最后呢,你看它只有这个年月日的这样的一个情况,那标准的格式呢,中间是用短横线呢做的连接啊没问题。好,那这呢,就是我们说的这叫date的情况。啊,大家你就最终呢,讲完以后呢,就记住这种标准的格式啊,你以后呢,也就标准点去写啊就行。
15:03
然后接下来的话呢,我们来看一下这个time类型。这个time呢,这哥们呢,跟咱们刚才说这个date啊,它用的这个字节数啊是一样的啊,也是三个字节对吧,然后标准的格式呢,就是HMMSS啊,就是hour minute和second对吧,十分秒啊呃,那么咱们说了,它表示这个范围呢,不止局限在24小二14小时之内了,所以说呢,它这个格式里边我们先看这个一啊有一有点意思,前面呢,有可能会带一个D。这个地呢,理解成就是这个D啊,就是天的意思了啊,最小值是零,最大值呢是34,你看它这个34天之内呢,相当于它都可以做一个表达的,就是我们这个time的特征是吧。好,那这块呢,大家需要你注意的就是我们这叫D啊十分秒,或者你这块呢,直接就十分秒,然后如果呢,只有两位的话呢,呃,前面一个数值冒号后边的数值,注意这是表示的是小时和分钟,可不是说分钟冒号秒数,这要小心一点。
16:02
然后这里要带一个D的话呢,也是小时和分钟,如果只有这样的一个啊,有一个日期啊,有一个天,然后后边这个那肯定就是这个小时了,如果只是有一个数的话呢,把它我们看作是什么呀,看作是秒。啊,这个呢,你稍微留意一点,看到是这个秒了,就这呢是算是一个写法,那如果这样写的话呢,我们显示的话呢,因为你显示的是时间了嘛,所以这个D呢,这个D呢,需要做个转换,那D呢乘以24,然后再加上我们这个小时,那就算出来就是总共呢,呈现出来这个小时的这个情况。那如果这样写的话呢,刚才不是说过了,它呢跟这个是不是匹配的呀,所以呢,它表示的是小时啊分钟,而不是说呢这个分钟和秒数啊,这要注意,那你要是不带这个冒号的话呢,那不就这样吗?或者这样,哎,这都可以识别出来的啊,这都可以识别出来的,然后呢,你要是这样写说写了个1210啊,这个1210我们怎么去对待呢?这个你写的是个数值类型的啊,不是咱们上面是个带冒号的啊,这个字符串了,要带冒号字符串的话呢,哎,咱们呢,就相当于你中间呢,是不是得有个冒号,然后呢,认为是小时和分钟,而这样写的话呢,他认为的是。
17:11
在这个分钟和秒数。哎,这有一个笑点需要注意一下。啊,就是尽量呢,说白了啊,咱们就别写这个花里胡哨的这些,尽量呢,我们写的就标准一点是吧,哎,标准一点,然后也可以呢,使用这个a current time或者current time,还有这个now呢,我们去插入这个系统当前的这个十分秒啊,这是我们说的这个time类型,好下边呢,咱们就做测试啊,这个是咱们的6.3,哎,Time这个类型的,首先的话呢,我们也是先去创建这样的一个表,对吧,来我们CTRLC一下。好,我们这时候呢,选中那做一个执行。啊,没有问题啊,这时候你再看下de呢,其实也没什么意义啊,它也不会去,呃,额外的显示一些这个范围啊等等这样的一个情况啊,就只是说呢,这是一个time啊,仅此而已,好,那接下来的话呢,我们是不是就往里边去添加数据了,这个添加数据的话呢,那这个我就直接呢,就粘过来了,CTRL一下。
18:05
啊,咱们去做一个验证说明就可以了。那么呃,首先呢,我们说一下第一个啊,这个我们CTRL,哎,我这块呢,执行一下这个呢,哎,我设计它的时候呢,其实还是非常讲究的,就是跟我这里边情况啊,咱们是哎一一对应的啊,大家得注意一下,好首先来看我这样来写的话呢,它表示的是对是这意思吧,那我们这块呢,一边说一边呢去查看。Select星from your test这个time。OK,选中执行好出来了。首先这个二的话呢,它表示这个D,那我们这个二呢,是不是得乘以24 24是不是就48呀,再加上我们这个12是不是正好是60,哎,所以这块你看就60小时,然后30分29秒,诶就是这样的一个数据。然后后边这个呢,这就正常显示呗,然后在后边这个呢,哎,你会想,哎,这是小时分钟还是说分钟秒数呢,咱们说了是不是显示的是小时分钟啊,哎,所以呢,它就这样来呈现的,然后这个呢,同样的道理,二呢,又变换一下,这就是60小时的。
19:04
那60小时这个40分钟,然后呢,零零秒对吧,然后这个是一天,一天是这个,呃,24个小时,24小时,再加上你这个零五,这是不是29啊,就这样子呗,然后这个呢,咱表示的是秒数嘛,所以呢,就是45秒。哎,你看我这个呢,都列出来了,大家一看能够清晰就行。啊,我就不这块一个一个去敲了,没必要是吧,这个一说大家能明白就OK了,然后的话呢,我们标准的完了以后呢,说大家你也可以写这种,哎,什么意思啊,就是我们嗯,没有带这种冒号的,相当于有点像这种数值类型的这种表达了,来我们做一个执行。看,再去做一个select查看。好,这个的话呢,就是中间没有冒号了,12:35:20,哎这个呢也类似啊这块呢,诶我们刚才也讲到你要这样写,他认为就是分钟和秒数了,哎,所以就是这两个特征。没问题是吧,好,然后下边的话呢,我们去insert into的时候呢,哎,这呢是获取这个当前的这个十分秒,这个呢是也是一样啊,这个我少个小括号。
20:03
哎,这块是不是也少了。啊,这也少了,好把它加上小框啊,以及的话呢,咱们还可以用另外一个函数,就是跟咱们写的这个呢,是一个意思的啊,叫做科。是不是叫time吧,那这样也行,这呢就插入咱们当前的这个十分秒来我们执行来我们选中再去,哎执行一下,哎现在的话呢,我们是这个时间。没有问题,好,那这块的话呢,咱们相当于是把这个time呢,哎在那就也说清楚了。啊,也就说清楚了,呃,一般呢,咱们在开发当中呢,你要是用这个表示年月日啊,用data的话呢,会有一定的场景,然后单独的管用,Time的话呢,这个场景相对来说少一点啊,相对来说少一点,那使用年月日加上time呢,那当然就比较多了,所以我们下边讲一个重要的类型,叫做date time。好,那我们来看一下这个datetime,这个datetime呢,跟咱们下边要讲的叫time stamp呢,这哥俩呢都可以表达年月日,加上这个十分秒,那么区别是什么?那咱们先来看这个date time。
21:06
这个哥们儿呢,他占用的这个字节数啊,是最多的是八个字节啊,它占八个字节,我们这个day,这个time STEM的话呢,它是占几个字节啊。啊,他占这个四个字节啊。没问题是吧,呃,占四个字节啊,好了,我们看一下,哎,同学可能会,呃,就是稍微的扯两句啊,哎,你发现我们上边讲这个time的话呢,占三个字节,然后这个date的话呢,也是占三个字节,那我把这俩呢,诶就是我用一个字段表示date,用一个字段表示这time一共才占六个字节,那你这个呢,整一下就成八个字节了,有点多呀。是吧,那我们在开发当中,要不要说直接用个date表示一个字段,还是说把它拆成date和TIME2个字段去存储呢?啊,这个咱们一会儿呢,这块有一个开发经验的一个说明啊,咱们一会儿说啊。这个呢,人家八个呢,其实存储的范围呢,是比较大的啊,这个你注意。嗯,八个字节,然后呢,它的格式呢,标准的写法是这样子的,不用多解释了,对吧?哎,比较清楚,那么再往里边添加数据的话呢,那建议大家也是用这种标准的格式啊,四个Y注意啊,那中间呢,该加导文线加导文线,该加冒号加冒号,或者呢你这块都没加呢,这样写,但是这种写法呢,其实它的可读性不如这个好,而且呢,在存储的时候呢,也是给转化成了一个标准的这种加短横线和冒号的场景啊,这是其一,然后的话呢,如果你要是光写这个两位的这个年的话呢,那就成这样了。
22:28
哎,YY是吧,哎,这也是YY啊,就这个意思,那这里边呢,这个呃,零零到六九表示的哪个范围,七零到九九,哎这个一说就能明白啊,然后呢,使用我们这样的一个情况啊,Current time stamp,还有这个no啊,包括呢,我们还有几个像S等等,我们呢,讲这个单号函数的都提过啊可以。插入到当前这个字段当中,表示的年月日加上十分秒对吧,好,那这块呢,我们直接也是啊来测试。嗯,这块这是咱们这个6.4。6.4啊,Date time啊,它的这个类型好转过来,那这里边呢,我们有一个字段呢,就是date time这类型的。
23:10
诶,好的,没有问题是吧,然后接下来的话呢,我们是往里边去添加数据啊,哎,那这块我就直接呢,把这几个就都拿过来了啊CTRLC一下。没有问题,好,那我们一个一个来看,首先的话这块呢,是我们添加的,哎,像他和他都还算是比较标准的,那相对来说这个是更标准,推荐大家的写法。啊,这个呢反正也行,但是可读性呢是差一点来,我们选中呢,做一个执行啊这就可以了,嗯,这个咱们先做一个select。Select星来from一下,我们这个test叫date time1ok。没有问题是吧,那这个应该很清楚,然后的话呢,我们说呢,可以考虑呢,这个年呢是写两位的,你看这种写法呢,可读性真的还是挺差的啊,你看这个呢,好歹呢是一看能大体清楚。这个是吧,好,这个也没问题,然后这块的话,相当于是不是用的这个字串了,而是使用的我们这个算式数值又存在了一个隐式转换的问题啊,也是转换的问题,这里边呢,相当于这是作为这个年啊,这是月跟日啊,后边呢就是十分秒了。
24:13
啊是这意思吧,呃,这个的话呢,是1999年的,这个呢,这个呃就是用两位的页来表达的,啊就是这个意思,就是都能够识别,但是呢,就是不是很标准。那我们这块再去select清一下,那都能进去啊,这个应该不用多解释啊,都知道,然后呢,如果我们想添加的是当前的年月日十分秒的话呢,哎,这个current time step,包括这个now,哎,包括呢,我们还讲了一个像这个this date是吧,哎等等还有其他的啊,哎这个呢,我们就添加的是当前的年月日和时辰表来选中来在执行。哎,你看这就出来了。是OK的是吧,哎,是没有问题的,行,这个呢,是咱们讲的叫这个datetime。这个呢,咱们开发中的比较多,大家呢需要掌握的,然后接着的话呢,我们看一下这个哥们叫time step,它呢也是表示年日十分秒,嗯,格式的话呢,整体也一样,那区别在哪呢?首先它的这个字节数呢比较少。
25:07
哎,直接数比较少,按说是个好事儿,但是你相应带来的问题就是它存储的这个时间的范围呢,也就比较有限了,它只能从1970年到咱们2038年这样一个范围。那现在咱们还没有到这个2038年的,所以说这个我们用它呢,也都没问题是吧,而这块儿呢,也都是呃,1970年之前的话呢,也都算我们过去挺久的时间了,那相当于呢,就是我们在咱当前的这个生活的这个时间范围内呢,用这个time step呢,还是OK的啊,还是OK的,但是你如果要求比较严格了,说像历史当中的一些时间啊等等的,这个我们就不方便用它来进行存储了啊,因为字节数也比较小啊。然后这里边有个UTC,就是叫世界标准时间啊,就是比如说以这个英国那个格林位置标准时间来计算啊,它就涉及到一个时区的一个问题了。啊,涉及到一个时区的问题,你看这块呢,他有一句话啊,这句话呢,我现在说大家可能有点不理解,咱们一会儿呢,测试完以后呢,给大家讲。
26:02
然后呢,像这个类型的字段中插入数据的话呢,呃,满足这个这个这个格式的时候,两位呢,又转换成四位啊跟咱们上面讲的那个是一样的啊,是一样的,你要是插入的数据呢,呃,超出了它的这个范围了啊,那么此时呢,他该报错呢,就还报错啊,这个应该能体会是吧?好,那这块呢,我们来做这个测试啊,CTRLC。啊,这个是咱们的这个6.5啊叫time啊step,哎,它的一个类型。好,首先呢,我们这块呢,创建一个这样的一个表啊,没有问题啊,选中呢,我们做一个执行。哎,成了啊,然后接下来的话呢,我们像这个表中的这个字段里边是不是添加数据啊好添加数据呢,这块我们先,哎这个我就整个拿过来吧,哎,CTRLC一下。诶转过来来我们进行分析,那色into的话呢,呃,刚才说了年月日啊,十分秒,那起始的点的话呢,我们是1970年的啊,像这些呢,这都没问题,然后到2038年是吧?嗯,这个我后边呢也没有了啊,到2038年啊然后嗯,这个呢算是标准的写法,这个呢是把这个中间这个连接符呢给去掉了啊这个也还凑合啊,这个呢是用两位的来表示的,这个年的啊,大家需要注意,不是特别标准,也不推荐的这样去写。
27:17
OK,然后的话呢,诶,我这又用了一种方式,用这种啊叫爱的福,这个方式呢,去分隔年月日和时分秒啊,这个也是具备可读性的,那我们首先呢,把这块呢,整体上做一个执行。来,我们再做一个查看。哎,Select星来from一下我们test time。OK。嗯,好,大家看,那这时候呢,我们这个数据呢,你看都是可以正常的,是不是添加成功的呀,那这个呢,也是可以识别的啊,所以说我们是可以这样来写的啊,这个大家呢,你可以稍微关注一下,但是推荐的话,你还是尽量标准点,因为前面那个date也好,Date time也好,Time也好,是不是大家都尽量统一,你就记一个标准格式,是不是都省事一点是吧。
28:04
好,那么你要存储当前的这个,呃,年月日十分秒的话呢,哎,这个我们说呢,跟刚才讲daytime的一样啊,用这个函数呢就可以了。哎,我们去做个查询啊,那这都没问题是吧?然后呢,刚才我们提到呢,就是你要存储这个数据的话呢,它有一个上限,哎上限呢,是到我们这个时间范围内的啊,那你要是存储的超出了这个结构的话呢,是不是就有问题了,比如我这存的是2038年的啊,1月20号啊,就是多了一天啊,那此时呢,我们去做一个添加啊,走起啊叫incorre incorrect data value啊相当于这块呢,我们添加这个时间呢,超出人家的范围了。啊,就不让添加了啊,这个应该能理解是这意思吧。好,那么关于这个time step呢,跟咱们这个daytime的区别呢,大家应该能感受到一点,就是呃,它这个存储的范围的话呢,相对来说是小一些的。是吧,哎,它的存储范围小一些的,咱们上边这个呢,你看是到。
29:02
诶到这儿了,是不是9999是吧,它这个范围呢,显然会更大啊,这是其中之一,然后呢,第二个呢,咱们来说一下它俩的区别,哎,就是呢,涉及到关于时区的一个问题了,哎,关于时区的一个问题,什么意思呢?来我这里边儿呢,创建一个表。先对比一下啊,我在那写一下对比,嗯,Date time。嗯和嗯,咱们这个叫time stamp。诶再往前一点啊,哎,对比一下这哥俩,那这个时候呢,我们往这里边呢,去添加这个时间啊,这个添加时间的话呢,我分成两种情况,一个呢就是一个指定的年月日啊,一个呢是咱们当前的这个,哎,No啊这个应该能懂啊啊这呢具体写的这个年月日十分秒跟这个呢是完全一样的,就是前后都一样,这个呢也是前后都一样的,好,我们选中了做一个执行。这个大家应该OK的是吧,好,那此时的话呢,我们做一个select星,哎,From一下我们temp,哎,Test这个temp啊好,我们选中呢,做一个执行。
30:06
嗯,我这儿。我刚才这个呢,执行了吗。没注意是吧,我们这块呢,嗯,我是不是没有执行啊,然后F5刷新一下,然后我们这里边打开test temp哦,这个我写的是temp是吧?啊这这注意一下,好,那我们这块呢,到这儿啊temp这个这个temp啊好选中呢我们做一个执行。嗯,没有。哦,那我应该是没创见吧,是吧,好执行一下。哎,这个表创建了,然后接下来的话呢,我们这块呢,去执行这两个隐私语句好走一下。然后接下来我们去做一个这个select,好大家看此时呢,呈现给我们的。嗯,这个是我们这个第一,这个是我们这个第二啊,然后看一看啊,首先的话呢,这里边这个第一组啊,这个年月日年月日十分秒,呃,第二个这个年月日呃十分秒,你看是不是他们这一组是一样的,这一组的话呢,也是一样的,我们这个添加的速度你看是很快的,他们在这个秒数这方面你看都是一样,你要非得纠结这个好秒数呢,可能不一样了,多少有一个先后的区别。
31:11
哎,这块描述呢,看都是一样的,好,这块呢,大家好像没有发现他们二者是不是有什么区别呀。啊,没有看出来有什么区别,那接下来的话呢,我们这个区别就来了,我这儿呢,去修改咱们当前的这个时区。修改当天的时区,我改成呢叫加九,正常来讲呢,咱们是不是在东八区是吧?哎,东八区呢,相当于我们是加了一个八,现在呢,我往后这个加了一个九,那这个呢,就好比是应该是日本吧。嗯,不知道日本是东九区还是东十区啊,咱就假设日本是东九区了,好,我这块呢,诶做了一个执行也有点像呢,就现在在日本了,然后的话呢,我们再去,我把这个呢写到后边做一个select,一个星来我们走起。我们走起这时候呢,大家你注意,你看我们这个时候呢,还是02:45,咱们实际上呢,现在啊02:45,呃,就是其实咱们现在是两点多的是吧,这现在正好是到这个极限,这啊三点了,哎,这个显示的还是02:45,而这个呢,显示的你看就是03:45了,我们这个呢,是02:59的,这个时候呢,哎,这块呢,你看就显示的是03:59的一个场景了。
32:15
大家能发现呢,是不是我们使用这个time STEM的时候呢,它整个给我们加了一个小时啊。啊,这个原因是什么呢?就是因为我们现在切换成这个叫东九区了。切换成这个东九区了啊,那就相当于我们如果涉及到呢,时区之间的一个这个这个显示的话呢,诶这块呢,其实它就是诶这么个意思,你比如说相当于我们,比如说现在咱在中国,哎,我这块呢,是不是在这个时间点上,我做了一个执行,大家看到的是这个点。啊,大家看到是这个点,如果呢,你要是在这个日本这块呢,同样的一个去执行的话呢,诶你那块添加的是不上是不是这个时间呢,跟我这个就不一样了,就是吧,哎,就这意思啊。就是显示出来的就不一样了,那么这个呢,我们怎么去理解呢?哎,就看一下这个话了。
33:01
就开始这话了,咱们刚才呢,哎,比如说以这样的方式。嗯,这个来回切换有点这个眼晕啊,咱们这么着一下啊,我盯一下。啊,或者我我这样吧。我盯这句话。哎,我们回到这来看。嗯。来,我给大家去说明,你看啊,咱们这里边呢,是把这个和这个呢,分别存入的是这两个字段,你要是datetime的话呢,你写的多少那就是多少,而我们要是把这个年月日十分秒存到我们这个叫time STEM这个类型的字段当中的时候呢,他会把这个年月日十分秒怎么着啊,诶他呢,按照这个时区给你转换成底层的一个,实际上呢,是一个毫秒数。啊,你可以列解成就是1970年,呃,1月1号00:00:00到你这个指定的这个时间对应的这个毫秒数,它这块还要考虑这个时区的问题啊,最后呢,算出来这个毫秒数呢是多少,然后呢,呃,根据你现在接下来我们是不是要显示的,你显示的时候呢,呃,它就会看一下你现在在哪个市区,因为咱们添加这个数据的时候,咱们是不是在这个东八区添加的,所以呢,你要是在东八区的时候显示的跟这个数呢是一样的。
34:12
但是你要变成东九区了,哎,他这时候呢,诶底层存储那个毫秒数的话呢,它再转化成东九区的时候呢,他再把你这个中间差的那九个小时呢,给你加上,那一加的话呢,这不就导致我们这块就多了一个小时吗。能清楚吧,就相当于我们这个数在存的时候呢,它得减去那个八个小时,然后得到那个标准的那个,呃,这个毫秒数,然后呢,在显示的时候呢,看你是那个东八区的还是东九区的,要东八区呢,再加上啊,这不就回来就变成它了,还是它要变成东九区的话呢,那就还得再加一个小时,显示的就不一样了。哎,就是这样一个道理啊,这个大家稍微关注一下啊,相信它底层存储的话呢,算是一个毫秒数,进而的话呢,哎,我们说这哥俩呢,会延伸出来一个什么区别呢?就是如果呢,我们要是进行一个年月日十分秒的一个排序的话,那用他俩谁比较快呢?
35:01
哎,那显然是不是用这个time step要快一点,因为呢,它底层是那个毫秒数嘛,直接呢去比数值谁大谁小啊,它就要稍微的快一点。啊行,那下边呢,我们再看一下它的区别,这个呢范围比较小,嗯,这个是这个啊,然后它底层的存储是毫秒数啊,这个咱们刚才说过了,如果比较这个大小的话呢,Time STEM呢会更快一些,那它跟这个市区呢是有关系的,而daytime的话呢,它反映的就是咱们插入数据的当地的这个市区的这个时间。啊,其他时区的人呢,看到呢,可能会有一定的误差是吧,是这个意思。上这呢是我们说的,哎,这个意思啊,这个意思啊,那么接下来咱们做一个整体的总结了。哎,整体的总结了,我们一共讲了五种日期时间的场景,那开发当中我们用哪一种用的多呢?结论呢,就是我们开发中使用datetime的场景是最多的。啊,在实际的项目当中,尽量的使用date time,因为呢,这个数据类型完整的记录了日期和时间,取值范围呢也很大,使用起来也比较方便啊,我们前面提到了,说我们把这两个分散开啊,我一个呢用来字段呢,用来记录这个叫date,那一个字段呢,我用来专门记录这个time啊,然后这个呢,这哥们呢,三个字节,这哥们三个字节加起来你看还挺少的啊,你这块上来是不是就八个字节了,感觉挺多行不行呢?哎,不推荐这种写法。
36:23
因为呢,你要分散到好几个字段当中呢,这个不易去记忆,包括呢,我们在查询的时候呢,你还得多个字段呢,去进行查询也比较复杂,所以我们就可以呢,直接啊这个用data time呢一个字段呢去表示,而且它的范围呢,实际上也是很广的。啊,这个要注意一下。呃,此外的话呢,就是那如果说我们诶就是为什么不用这个time step呢,它这个范围比较小嘛,是吧,我们这个呢,范围比较大啊这个意思,嗯,那此外的话呢,说你要是这个呃,注册时间呀,商品发布啊呃等等,呃不建议使用这个daytime,而是使用这个叫时间戳啊,因为呢,Daytime呢,虽然直观,但是不建议不便于呢去做一些计算啊,就是计算相关呢,实际上用毫秒数呢是比较合适的是吧。
37:07
哎,那么我们前面呢,讲了一个单号函数的时候提到过叫unix time step,哎,我们这个函数呢,实际上就能够获取一个时间戳。啊,获取个这个时间戳,然后的话呢,大家你可以比如说在一个表当中,我们去专门有一个字段呢,比如说用一个long类,呃,这个我们叫什么big in类型呢,去这个表示的,然后呢,专门去记录个时间戳啊也是OK的。啊,你看它呢,对应的是这个这个呢,就是1970年1月1号00:00:00啊,零毫秒是吧,到现在的一个毫秒数啊就这样。哎,你也可以呢,把它再还原成我们的年月日十分秒,咱们讲单元函数的时候都说过,大家你回去看一眼就行。好,那么至此呢,咱们把这个日期时间呢,就类型呢,就说完了啊,主要呢,是不是记住它呀。啊,OK。
我来说两句