有没有办法减去 2 个时间戳并在 Redshift 中以 'hh:mm:ss' 格式获得结果

Is there a way to subtract 2 timestamps and get the result in 'hh:mm:ss' format in Redshift

我一直在尝试使用

获取两个时间戳之间的持续时间
select timestamp1-timestamp2 as time_s
from table_name

但我得到的结果是:

00:00:06.070627
00:00:33.415313
00:00:51.293319
00:02:00.146453
00:02:25.600623
00:06:37.811005
00:28:27.698517

我不想要“.

之后的值

我试过使用

split_part(time_s, '.',1)

但它给了

6070627
33415313
51293319
120146453
145600623
397811005
1707698517

有人可以帮忙吗?

两个时间戳之间的差异是INTERVAL

您遇到的基本问题是没有标准的方法来显示或 return 间隔。例如:

  • 如果您在 web-based Redshift 查询编辑器中尝试查询,它将 return NULL
  • 如果您 运行 在您的特定 SQL 客户端中,它正在 returning 00:00:06.070627
  • 如果你在 DbVisualizer 中 运行 它,它是 returning 0 years 0 mons 0 days 0 hours 0 mins 0.0 secs
  • 如果你在 DataGrip 中 运行 它,它是 returning Invalid character data was found

当您尝试提取 . 左侧的部分结果时,Redshift 感到困惑,因为 它看不到输出的显示方式 [= =57=]客户.

避免您的 SQL 客户端对结果做奇怪事情的最好方法是 将答案转换为 TEXT:

SELECT (timestamp1 - timestamp2)::TEXT

这给出了这样的答案:24 days 13:57:40.561373

然后您可以像操作字符串一样操作它:

SELECT SPLIT_PART((timestamp1 - timestamp2)::TEXT, '.', 1)

这给出:24 days 13:57:40

底线: 当 SQL 结果看起来很奇怪时,将结果转换为 TEXT 或 VARCHAR 以查看数据 真实情况看起来像。