【发布时间】:2020-02-06 04:54:34
【问题描述】:
我需要使用时间戳格式创建两列的列差异。
我有col1和col2,需要生成列“diff(hous)”,如图高亮部分。谢谢。
【问题讨论】:
-
标准 SQL 没有时间函数 - 它们由每个数据库提供者(SQL Server、Oracle、MySql 等)实现。请添加相应的标签以了解您需要哪些功能,
标签: sql timestamp teradata-sql-assistant
我需要使用时间戳格式创建两列的列差异。
我有col1和col2,需要生成列“diff(hous)”,如图高亮部分。谢谢。
【问题讨论】:
标签: sql timestamp teradata-sql-assistant
Calculate the time difference between two timestamps in mysql
因此,您需要先创建一个空的新列,然后通过执行 TIMESTAMPDIFF 来填充它。 类似的东西:
UPDATE table SET newcolumn = TIMESTAMPDIFF(HOUR,col1,col2);
类似的东西
【讨论】:
请注意,您的“diff(hours)”值实际上代表天数,而不是小时数。
Teradata 不提供原生时间戳差异函数,但您可以通过提取部分并进行简单数学计算:
select col1, col2,
cast((cast(col1 as date) - cast(col2 as date)) as float)
+cast((extract(hour from col1) - extract(hour from col2)) as float)/24
+cast((extract(minute from col1) - extract(minute from col2)) as float)/24/60
+cast((extract(second from col1) - extract(second from col2)) as float)/24/60/60
as diff_days
from myTable;
如果需要在多个地方使用,可以将计算放入 SQL UDF。
【讨论】:
teradata标签; teradata-sql-assistant 是一个客户端工具。