hive 计算年龄 hive 年加减 | 您所在的位置:网站首页 › excel表格日期相减得到天数 › hive 计算年龄 hive 年加减 |
Hive時間函數-年份相加減
目前為止搜了很多资料,都没有找到Hive关于时间 年份,月份的处理信息,所以就自己想办法截取啦 本来是用了概数,一年365天去取几年前的日期,后来测试的发现不够精准,然后给提了mantis bug. emmmmm..... 然后就想办法精准吧,找不到相应函数就自己来凑哈哈哈 例如,我需要取当前时间3年以前的日期 (当前日期为2019年11月14日晚8点+)实现思路:(通过字符串的截取与拼接) 1.先获取当前时间 2.取的当前时间的年份信息 3.将当前时间的年份信息 减去 3 4.将新的年份与原来的月份及日 拼接 5.即可得到精准的三年以前的数据信息啦
首先我们获取当前时间信息: select from_unixtime(unix_timestamp()); //输出结果 2019-11-14 20:41:03
得到当前时间的年份: select from_unixtime(unix_timestamp()); // 输出结果 2019
得到当前时间的年份的三年以前的年数据: select year(from_unixtime(unix_timestamp()))-3; //输出结果 2016
拼接 新的年份信息 与 原来的月份及日信息 (因为我这里目前只需要精准到日,所以就不附加时分秒信息了) select concat(cast ((year(from_unixtime(unix_timestamp(),'yyyy-MM-dd'))-3) as string),substr(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),5,6)); //输出结果 2016-11-14
以上便得到了我们要的三年以前的今天啦,往后我们在需要使用年份比较数据的时候均可借鉴此思路(再还没有出现合适的年份加减函数之前) ps: 在实际应用中我们也可以使用具体的日期来代替当前日期 例如: select concat(cast ((year('2019-11-11')-3) as string),substr('2019-11-11',5,6)); //输出结果 2016-11-11
我们也可以使用数据库中的表日期字段来代替当前日期 例如:select concat(cast ((year(t.startdate)-3) as string),substr(t.startdate,5,6)) , t.startdate from t_testyear t ; // 其中startdate是数据表中的一个日期字段
|
CopyRight 2018-2019 实验室设备网 版权所有 |