Teradata中的日期差异

我有一个Teradata表,其中有2个Varchar列,它们都具有如下所示的数据

颜色1:08/09/2017 01:03:20 PM和其他类似内容
第2栏:09/09/2017 01:03:20 PM

我该如何处理日期差异

简单(col1- col2)不能帮助我。

jnnakj 回答:Teradata中的日期差异

首先,如果您对此表或ETL有任何控制权,建议不要将时间戳存储为varchar,因为无论它们看起来像一个数字还是一个日期,您都不能减去两个字符串。

您要做的是将这两列强制转换为TIMESTAMP,以指定它们当前所在的FORMAT。转换之后,您可以减去它们以获得INTERVAL类型,表示日期之间的天数。

SELECT (CAST('09/09/2017 01:03:20 PM' AS TIMESTAMP FORMAT 'mm/dd/yyyybhh:mi:ssbt') - CAST('08/09/2017 01:03:20 PM' AS TIMESTAMP FORMAT 'mm/dd/yyyybhh:mi:ssbt')) DAY(4)

另一种选择是(在转换为时间戳之后),将其推入PERIOD()并找到那个时期的INTERVAL()

SELECT INTERVAL(PERIOD(CAST('08/09/2017 01:03:20 PM' AS TIMESTAMP FORMAT 'mm/dd/yyyybhh:mi:ssbt'),NEXT(CAST('09/09/2017 01:03:20 PM' AS TIMESTAMP FORMAT 'mm/dd/yyyybhh:mi:ssbt')))) DAY(4) 

第一种选择的性能会更好,因为数据的混乱情况会减少,但是如果经常这样做,那么在加载时仅将PERIOD类型存储在表上可能是一个好主意这样,您就可以在SQL中执行INTERVAL(my_period_column) DAY(4)

本文链接:https://www.f2er.com/3109142.html

大家都在问