sql - Teradata SQL:Teradata 的原生日期格式是什么?(什么会有最好的查询性能?)
问题描述
所以我是一名数据分析师,并且总是在我的数据拉取中处理各种日期范围(我猜谁不是)。
我通常将日期作为整数传递给 Teradata,其中 2019 年 6 月 6 日将作为 1190606 传递。否则,我们的 Teradata 数据库支持将日期作为字符串传递为“2019-06-06”。
最近,我们的一位管理员声称将日期作为整数传递会降低性能。所以我想知道,将日期传递给 Teradata 的最有效方法是什么?哪种方式可以确保最佳的查询性能?
谢谢。
解决方案
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'
推荐阅读
- python - 图形工具中的 has_path 等效项
- azure - 天蓝色 blob 存储 cli 列出目录
- php - 如果数据库中已存在行,则不要导入行
- azure - Azure AD B2C Xamarin.ios 本机
- python - 在 Pandas 中调用多行
- spring - ClassTemplateLoader 不在指定路径中寻找模板
- mysql - 尝试从 sqoop 中选择时出现 MySQLSyntaxErrorException
- scala - Scala更改特征中定义的函数的参数
- artifactory - 将一个 Artifactory 连接到另一个 Artifactory
- typescript - 类型注释 reflectPromise 方法