【问题标题】:How to handle null timestamps using coalesce in Teradata如何在 Teradata 中使用合并处理空时间戳
【发布时间】:2019-09-24 03:28:47
【问题描述】:

我有三个数据类型为 TIMESTAMP(6) 的列,我希望找出三个时间戳中的最小值。在任何给定时间,三列中至少有 1 个非空数据点。

我尝试在网上寻找替代方案,但在此问题上找不到与时间戳比较相关的任何内容。有一种使用合并的解决方案,它适用于数据类型日期但不适用于时间戳。

【问题讨论】:

  • 合并时间戳似乎对我有用:SELECT COALESCE(CAST(NULL AS TIMESTAMP(0)), TIMESTAMP '2018-01-01 05:00:00')

标签: teradata teradata-sql-assistant


【解决方案1】:

我猜您是在询问是否尝试将 LEAST 与时间戳一起使用?我不知道为什么 Teradata 没有对此做任何事情。对于时间戳,我只是将它们转换为 varchar。 Null 让它变得更丑陋,因为您必须将它们与某些东西合并,这取决于您是否希望 null 小于其他所有内容。

select
least (
coalesce(null,'9999-12-31'),        --if you want nulls to not be the least
cast(current_timestamp as varchar(32)),
cast(timestamp '2018-01-01 05:00:00' as varchar(32)))

在实际查询中,您最终会为要输入最少函数的每一列组合合并和强制转换。

编辑: 我应该补充一点,这适用于 YYYY-MM-DD 日期,其他格式可能无法正确排序。

【讨论】:

    猜你喜欢
    • 2017-05-24
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    相关资源
    最近更新 更多