在HiveQL

时间:2018-05-29 13:49:39

标签: date hive hiveql

我对Hive来说是全新的,我真的很感激一些帮助。

我的桌子上有一个日期栏,我想保留这个日期的月份和年份。我在excel中会做的如下:

datenew= date(year(old_date),month(old_date),1)

我的old_date格式为YYYY-MM-DD

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以将truncmm选项一起使用(适用于Hive版本1.2及更高版本),这将在一个月的第一天返回。

trunc(dateCol,'MM')

如果不支持trunc,请使用

date_add(dateCol,1-day(dateCol))

答案 1 :(得分:0)

使用date_formattrunc功能,或substr()+concat()

演示:

hive> select current_date original_date,
    >               date_format(current_date,'yyyy-MM-01') `date_format`,
    >               trunc(current_date, 'MM')              `trunc`,
    >               concat(substr(current_date,1,7),'-01') `substr`
    >               ;
OK
original_date   date_format     trunc           substr
2018-05-30      2018-05-01      2018-05-01      2018-05-01
Time taken: 0.093 seconds, Fetched: 1 row(s)

答案 2 :(得分:0)

您可以使用TRUNC (date,fmt)这是一个函数返回日期,截断日期的时间部分到格式模型fmt指定的单位。它总是返回数据类型DATE的值:

示例:

hive> select trunc(current_date, 'MM');
OK
2018-05-01

hive> select trunc(current_date, 'YEAR');
OK
2018-01-01