将整型列转换为日期-prestodb

uwopmtnx  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(281)

我在表a中有一个日期列作为整数'20200101',在表b中还有一个日期列作为日期'2020-01-01'。我想在连接条件中使用这两列。如何将整数列转换为日期,然后匹配这两列?
我试过这些:
date_format(from_unixtime(cast(a.date as string),'yyyyMMDD','yyyy-MM-dd') = B.Date) CAST(parse_datetime(CAST(a.date AS varchar), 'yyyyMMdd') AS date) = B.Date 他们都不管用,任何帮助都将不胜感激。

kqhtkvqz

kqhtkvqz1#

首先,您应该着手修复数据模型:始终使用适当的数据类型来存储您的值,从长远来看,这将使您的生活更轻松,并避免像这样不必要的问题。
至于你的问题:一个选择是将日期转换为整数。

a.date = cast(date_format(b.date, '%Y%m%d') as int)

也可以表示为:

a.date = year(b.date) * 10000 + month(b.date) * 100 + day(b.date)

或者可以将整数转换为日期:

date_parse(cast(a.date as varchar), '%Y%m%d') = b.date

相关问题