【问题标题】:Teradata SQL: What is Teradata's native date format? (what will have best query performance?)Teradata SQL:Teradata 的原生日期格式是什么? (什么会有最好的查询性能?)
【发布时间】:2019-11-03 17:07:55
【问题描述】:

所以我是一名数据分析师,并且总是在我的数据拉取中处理各种日期范围(我猜谁不是)。

我通常将日期作为整数传递给 Teradata,其中 2019 年 6 月 6 日将作为 1190606 传递。否则,我们的 Teradata 数据库支持将日期作为字符串传递为“2019-06-06”。

最近,我们的一位管理员声称将日期作为整数传递会降低性能。所以我想知道,将日期传递给 Teradata 的最有效方法是什么?哪种方式可以确保最佳的查询性能?

谢谢。

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    1190606是Teradata DATE的内部存储格式,使用

    (year - 1900) * 10000 + (month * 100) + day
    

    当然,使用它不会降低性能,但除非您知道公式,否则它看起来不像是一个合适的日期。试着写1899-03-31 :-)

    不要使用'2019-06-06',它只是一个字符串,会根据目标列的格式自动转换为日期。因此,当该格式更改时,它可能会失败。

    只有一种推荐的方式来编写 DATE,使用仅支持 YYYY-MM-DD 格式的标准 SQL DATE Literal:

    DATE '2019-06-06'
    

    TIME '12:34:56.12'TIMESTAMP '2019-06-06 12:34:56.12' 类似

    【讨论】:

    • 谢谢,以后我会使用 DATE 'YYYY-MM-DD'。
    猜你喜欢
    • 1970-01-01
    • 2012-08-18
    • 2020-05-08
    • 2020-08-28
    • 2018-04-11
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多