将整数列转换为日期 - Prestodb
Converting Integer column to date - Prestodb
我在 table A 中有一个日期列作为整数“20200101”,在 table 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
None 成功了,如有任何帮助,我们将不胜感激。
您首先应该努力修复您的数据模型:始终如一地使用正确的数据类型来存储您的值将使您的生活在长期内更轻松,并避免诸如此类的不必要问题。
关于您的问题:一种选择是将日期转换为整数。
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
我在 table A 中有一个日期列作为整数“20200101”,在 table 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
None 成功了,如有任何帮助,我们将不胜感激。
您首先应该努力修复您的数据模型:始终如一地使用正确的数据类型来存储您的值将使您的生活在长期内更轻松,并避免诸如此类的不必要问题。
关于您的问题:一种选择是将日期转换为整数。
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