Teradata SQL:Teradata 的本机日期格式是什么? (什么会有最好的查询性能?)
Teradata SQL: What is Teradata's native date format? (what will have best query performance?)
所以我是一名数据分析师,并且总是在我的数据拉取中处理各种日期范围(我猜谁不是)。
我通常将日期作为整数传递给 Teradata,其中 6-Jun-2019 将作为 1190606 传递。否则我们的 Teradata 数据库支持将日期作为字符串传递为“2019-06-06”。
最近我们的一位管理员声称将日期作为整数传递会降低性能。所以我想知道,将日期传递给 Teradata 的最有效方法是什么?哪种方式可以保证最好的查询性能?
谢谢。
1190606
是Teradata DATE的内部存储格式,使用
计算
(year - 1900) * 10000 + (month * 100) + day
当然使用它不会降低性能,但除非您知道公式,否则它看起来不像是正确的日期。尝试写 1899-03-31
:-)
不要使用 '2019-06-06'
,它只是一个字符串,会根据目标列的格式自动转换为日期。因此,当该格式更改时,它可能会失败。
只有一种推荐的 DATE 编写方法,即使用仅支持 YYYY-MM-DD 格式的标准 SQL DATE 文字:
DATE '2019-06-06'
类似于 TIME '12:34:56.12'
和 TIMESTAMP '2019-06-06 12:34:56.12'
所以我是一名数据分析师,并且总是在我的数据拉取中处理各种日期范围(我猜谁不是)。
我通常将日期作为整数传递给 Teradata,其中 6-Jun-2019 将作为 1190606 传递。否则我们的 Teradata 数据库支持将日期作为字符串传递为“2019-06-06”。
最近我们的一位管理员声称将日期作为整数传递会降低性能。所以我想知道,将日期传递给 Teradata 的最有效方法是什么?哪种方式可以保证最好的查询性能?
谢谢。
1190606
是Teradata DATE的内部存储格式,使用
(year - 1900) * 10000 + (month * 100) + day
当然使用它不会降低性能,但除非您知道公式,否则它看起来不像是正确的日期。尝试写 1899-03-31
:-)
不要使用 '2019-06-06'
,它只是一个字符串,会根据目标列的格式自动转换为日期。因此,当该格式更改时,它可能会失败。
只有一种推荐的 DATE 编写方法,即使用仅支持 YYYY-MM-DD 格式的标准 SQL DATE 文字:
DATE '2019-06-06'
类似于 TIME '12:34:56.12'
和 TIMESTAMP '2019-06-06 12:34:56.12'