使用impala sql,有没有一种简洁的方法来计算两个时间戳之间的月数?这个 datediff 函数只返回两个时间戳之间的天数,但我希望有一种优雅的方法可以对月数执行相同的计算。
datediff
weylhg0b1#
MONTHS_BETWEEN(TIMESTAMP newer, TIMESTAMP older) 目的:返回两个时间戳值的日期部分之间的月数。除了两个日期之间的整月之外,还可以包含表示额外天数的小数部分。分数部分的计算方法是用天数除以31(不考虑月份)。返回类型:双加入:cdh 5.5.0/ Impala 2.3.0
MONTHS_BETWEEN(TIMESTAMP newer, TIMESTAMP older)
jdgnovmf2#
不幸的是,很少有一个优雅的答案来回答这个问题,即使是在python这样的全功能编程语言中。答案取决于你如何定义 # of months between two timestamps .如果要使用impala内置来解决这个问题,我会首先对timestamp列进行排序,然后使用 TO_DATE(ts) ,然后使用 YEAR(date) , MONTH(date) ,和 DAY(date) 从日期字符串中提取组件,最后使用与https://stackoverflow.com/a/4040338/171965,并修改为比较日期,如果较后日期的日期低于较早日期的日期,则减去一个月。
# of months between two timestamps
TO_DATE(ts)
YEAR(date)
MONTH(date)
DAY(date)
2条答案
按热度按时间weylhg0b1#
MONTHS_BETWEEN(TIMESTAMP newer, TIMESTAMP older)
目的:返回两个时间戳值的日期部分之间的月数。除了两个日期之间的整月之外,还可以包含表示额外天数的小数部分。分数部分的计算方法是用天数除以31(不考虑月份)。返回类型:双
加入:cdh 5.5.0/ Impala 2.3.0
jdgnovmf2#
不幸的是,很少有一个优雅的答案来回答这个问题,即使是在python这样的全功能编程语言中。答案取决于你如何定义
# of months between two timestamps
.如果要使用impala内置来解决这个问题,我会首先对timestamp列进行排序,然后使用
TO_DATE(ts)
,然后使用YEAR(date)
,MONTH(date)
,和DAY(date)
从日期字符串中提取组件,最后使用与https://stackoverflow.com/a/4040338/171965,并修改为比较日期,如果较后日期的日期低于较早日期的日期,则减去一个月。