不使用字面量为Timestamp列添加同行动态时间间隔的实现方法
实现方案
以下为不同主流SQL引擎的无字面量实现方式,所有方案的增量取值均来自当前行的TIME_DELTA字段,完全匹配示例计算效果:
ANSI SQL兼容写法(适配PostgreSQL、Oracle 12c+、Spark SQL、Flink SQL、Hive 2.3+)
SELECT SCAN_DTM_UTC, TIME_DELTA, SCAN_DTM_UTC + (TIME_DELTA * INTERVAL '1 minute') AS SCAN_DTM_ADJ FROM 你的表名;
MySQL专属写法
SELECT SCAN_DTM_UTC, TIME_DELTA, DATE_ADD(SCAN_DTM_UTC, INTERVAL TIME_DELTA MINUTE) AS SCAN_DTM_ADJ FROM 你的表名;
SQL Server专属写法
SELECT SCAN_DTM_UTC, TIME_DELTA, DATEADD(MINUTE, TIME_DELTA, SCAN_DTM_UTC) AS SCAN_DTM_ADJ FROM 你的表名;
上述所有方案均支持跨小时、跨天的边界计算,比如示例中2020-01-17 12:52:57.000000加10分钟后可正确输出2020-01-17 13:02:57.000000,无需额外处理边界逻辑。
内容的提问来源于stack exchange,提问作者POLASBE
相关产品推荐
相关产品推荐

