hive教程:日期转换-year() 、month()、day()、hour()、minute()、second()、weekofyear() 作者:马育民 • 2022-05-22 11:38 • 阅读:10087 # 说明 从日期字段中,获取相应的部分,返回类型是 `int` 型 # year() 日期转年函数,返回日期中的年 返回类型:`int` ### 语法: ``` year(string date) ``` ### 注意格式 `date` 必须包含 `yyyy-MM-dd` 年份必须是 `yyyy` 格式 月日是二位、还是一位都可以 只要符合这些格式就可以返回天,否则转换失败,返回null ### 例子 ``` select year('2011-12-08 10:03:01') 返回 2011 ``` ``` select year('2012-12-08') 返回 2012 ``` ``` select year('2012-12'); NULL ``` # month() 返回日期中的月份 ### 语法: ``` month(string date) ``` 返回类型: `int` ### 注意格式 `date` 必须包含 `yyyy-MM-dd` 年份必须是 `yyyy` 格式 月日是二位、还是一位都可以 只要符合这些格式就可以返回天,否则转换失败,返回null ### 例子 ``` select month('2011-12-08 10:03:01'); 返回 12 ``` ``` select month('2011-08-08'); 返回 8 ``` ```` select month('2011-08'); 返回 NULL ``` # day() 返回日期中的天 ### 语法: ``` day(string date) ``` 返回值: int ### 注意格式 `date` 必须包含 `yyyy-MM-dd` 年份必须是 `yyyy` 格式 月日是二位、还是一位都可以 只要符合这些格式就可以返回天,否则转换失败,返回null ### 例子 ``` select day('2011-12-08 10:03:01'); 8 select day('2011-12-24'); 24 select day('2011-12'); NULL ``` # hour() 返回日期中的小时 ### 语法: ``` hour(string date) ``` 返回值: int ### 注意格式 `date` 必须包含 `年-月-日 时:分:秒` `年`:四位、二位都可以 `月-日 时:分:秒` 是二位、一位都可以 只要符合这些格式就可以返回 **小时**,否则转换失败,返回null ### 例子 可以正常转换: ``` select hour('2011-12-08 10:03:01'); 10 select hour('1-12-08 9:3:1'); 9 ``` 不能正常转换: ``` select hour('2011-12-08 10:3'); 0 select hour('10:03:01'); null ``` # minute() 返回日期中的分钟 ### 语法: ``` minute(string date) ``` 返回值: int ### 注意格式 `date` 必须包含 `年-月-日 时:分:秒` `年`:四位、二位都可以 `月-日 时:分:秒` 是二位、一位都可以 只要符合这些格式就可以返回 **小时**,否则转换失败,返回null ### 例子 可以正常转换 ``` select minute('2011-12-08 10:03:01'); 3 select minute('1-12-08 9:3:1'); 3 ``` 不能正常转换: ``` select minute('2011-12-08 10:3'); 0 select minute('10:03:01'); null ``` # second() 返回日期中的秒 ### 语法: ``` second(string date) ``` 返回值: `int` ### 注意格式 `date` 必须包含 `年-月-日 时:分:秒` `年`:四位、二位都可以 `月-日 时:分:秒` 是二位、一位都可以 只要符合这些格式就可以返回 **小时**,否则转换失败,返回null ### 例子 可以正常转换 ``` select second('2011-12-08 10:03:13'); 3 select second('1-12-08 9:3:12'); 12 ``` 不能正常转换: ``` select second('2011-12-08 10:3'); 0 select second('10:03:01'); null ``` # weekofyear() 返回日期在当前的周数 ### 语法: ``` weekofyear(string date) ``` 返回值: int ### 注意格式 `date` 必须包含 `yyyy-MM-dd` 年份必须是 `yyyy` 格式 月日是二位、还是一位都可以 只要符合这些格式就可以返回天,否则转换失败,返回null ### 例子 可以正常转换: ``` select weekofyear('2022-01-01'); 返回52,是上一年的第52周 select weekofyear('2011-1-8 10:03:13'); 1 select weekofyear('2011-1-08 10:3'); 1 ``` 不能正常转换: ``` select weekofyear('1-1-08 9:3:12'); 2 select second('2011-1'); null ``` 感谢: https://cloud.tencent.com/developer/article/1025429 原文出处:http://malaoshi.top/show_1IX3MD4amO7I.html