我正在尝试计算一行中字符串数据类型的两列之间的时间差。如果它们之间的时间差小于 2 小时,则选择该行的第一列,否则如果时间差大于 2 小时,则选择该行的第二列。可以通过将列转换为日期时间格式来完成,但我希望结果仅采用字符串形式。我怎样才能做到这一点?数据如下:
col1(字符串类型)
2018-07-16 02:23:00
2018-07-26 12:26:00
2018-07-26 15:32:00
col2(字符串类型)
2018-07-16 02:36:00
2018-07-26 14:29:00
2018-07-27 15:38:00
我认为您不需要将列转换为日期时间格式,因为您的案例中的数据已经排序(yyyy-MM-dd hh:mm:ss)。您只需将所有数字放入一个字符串中 (yyyyMMddhhmmss),然后您就可以应用大于或小于 2 小时的选择(此处为 20000,因为小时后跟 mmss)。通过查看您的示例(假设 col2 > col1),此查询将起作用:
SELECT case when regexp_replace(col2,'[^0-9]', '')-regexp_replace(col1,'[^0-9]', '') < 20000 then col1 else col2 end as col3 from your_table;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)