date - MM 中的月份在 Hive 中使用 Month()

标签 date hive hiveql monthcalendar

Select * from concat(YEAR(DATE_SUB(MAX(Column_name),60),MONTH(DATE_SUB(MAX(Column_name),60),-01)
month()仅产生 单例直到 9 月的月份数,即 Jan 返回 1而不是 01 .需要帮助处理这个问题。

我正在使用此输出提供给另一个 SELECT使用 TO_DATE 查询.

最佳答案

month()函数返回整数,这就是为什么没有前导零的原因。您可以使用 lpad(month,2,0)格式化月份的函数:

hive> select lpad(month('2017-09-01'),2,0);
OK
09
Time taken: 0.124 seconds, Fetched: 1 row(s)
hive> select lpad(month('2017-10-01'),2,0);
OK
10
Time taken: 0.433 seconds, Fetched: 1 row(s)

或者,您可以使用 substr()从日期中提取年和月:
hive> select substr('2017-10-01',1,4) as year, substr('2017-10-01',6,2) as month;
OK
year    month
2017    10

Hive 2.1.0 (HIVE-13248) 之前的 date_sub() 函数返回类型是 String,因为创建该方法时不存在 Date 类型。看这里:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

关于date - MM 中的月份在 Hive 中使用 Month(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46658193/

相关文章:

java - 在 JodaTime 中将日期转换为其他格式

vb.net - 无法获取当前日期的月份

hadoop - hive 在 Spark 上。读取 Parquet 文件

hadoop - hive : Replace string/pattern in row if it exists else do nothing

jdbc - 通过 jdbc 客户端使用 hive udf 时出现奇怪的错误

sql - 如何通过在配置单元的分区表中选择另一列来覆盖列值

postgresql - 在 PostgreSQL 中使用月份名称进行排序

javascript - 如何使用 javascript 进行日计时器?

hadoop - 如何增加 Tez 的容器物理内存?

java - 配置单元服务器2-异常hive.service.ServiceException:设置阶段目录时出错