持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情
最近在开发中遇到一个错误,开始一直不知道是为啥原因,后来知道答案后还是基础不够扎实呀。
问题是这样的,求两个日期的差值,用的函数是正确的,就是datediff()这个求差函数,
但是获取的结果一直是空的,不知道为啥,将默认值修改了一下发现是返回结果的类型写错了,想当然的写成了bigint,实际datediff获得的结果是int类型的,默认值可以设置为0。
下面详细说一下他的使用。
常见使用方法: datediff(enddate,startdate)
具体功能描述: 这里是对两个日期获取他们相差的天数值,首尾不计算在内,大的时间在前,小的时间在后,注意他们获得的结果是int类型。输入的参数是string类型的。不用取数到十分秒,只要到日期就可以了。
select datediff('2022-02-01','2022-02-02')
>> 1
select datediff('2022-05-01','2022-02-02')
>> 91
继续接着上一文的集合函数,介绍几个map相关的集合函数,包括获取value值和长度的。
map_values()可以查询所有的map中的value值。
常见使用方法: map_values(Map<K.V>)
具体功能描述: 返回指定的map中的所有key值,应用也是比较广泛,比如将数据组装成map后,就只要获取key值,可以用到这个函数方法。注意此处返回的类型为array。
select map_keys({name:hahah,age:22,grade:900})
>> [name,age,grade]
size(Map<K.V>) 查询map的长度
常见使用方法:
具体功能描述: 可返回指定的map的长度,这个函数有什么应用场景呢,比如需要统计字段数量的时候,将数据组装成map后,应用到size()的函数,获取长度,返回的结果类型是int。
select size({name:hahah,age:22,grade:900})
>> 3
获取array的长度函数也是跟这个map长度获取的函数类似,只不过就是将参数换成array格式的内容即可,就不赘述了。