首页 > 解决方案 > Teradata SQL:Teradata 的原生日期格式是什么?(什么会有最好的查询性能?)

问题描述

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

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

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

谢谢。

标签: sqlteradata

解决方案


1190606是 Teradata DATE 的内部存储格式,使用以下公式计算

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

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

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

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

DATE '2019-06-06'

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


推荐阅读