Snowflake:两个时间戳之间的时间差

问题描述 投票:0回答:1

我们有一个 Teradata 逻辑来减去两个时间戳列,并考虑 HOUR(4) TO SECOND

我们必须在 Snowflake 中进行相同的转换才能开始相同的逻辑。已尝试以下设置,但无法正确填充数据以获得较小到较大的时间戳差异。

寻找合适的改变以获得等效的雪花结果:

SELECT TIMEDIFF(NANOSECOND,'2019-10-21 18:30:00.000','2019-09-10 00:40:00.950000') AS TIME_SEC, SIGN(TIME_SEC) AS SIGN1 ,
TO_CHAR(TIME_FROM_PARTS(0,0,0,TIME_SEC),'MI:SS.FF3') AS TIMESTAMP, round(TIME_SEC/3600000000000)::STRING as day1, CONCAT(DECODE(DAY1,'0',SIGN1||'0',DAY1),':',TIMESTAMP) ;

我们正在寻找

的等效版本
select (TO_TIMESTAMP('2019-10-21 00:40:00.000000') - TO_TIMESTAMP('2019-10-21 18:30:00.00000')) HOUR(4) to SECOND;
select (TO_TIMESTAMP('2019-10-21 00:40:00.000000') - TO_TIMESTAMP('2019-10-21 18:30:00.00000')) DAY(3) to SECOND;
timestamp snowflake-cloud-data-platform teradata
1个回答
0
投票

使用下面的代码-

select datediff(second, TO_TIMESTAMP('2019-10-21 18:30:00.00000') , TO_TIMESTAMP('2019-10-21 00:40:00.000000') ) c , iff(c<0,'-','')||   to_time(abs(c)::varchar) out

首先,我们计算以秒为单位的时间差。
然后,将其转换为 hh24:mi:ss。
然后,检查它是 +ve 还是 -ve 并使用 iif 添加相应的符号。

© www.soinside.com 2019 - 2024. All rights reserved.