【发布时间】:2020-09-29 04:16:15
【问题描述】:
比如说
cast(PURCHASE_DATE as date) > '2020-01-01'
对比
PURCHASE_DATE > cast('2020-01-01' as date format)
我对上述问题有几个问题:
- 我在我的应用程序上测试了这些,它们都导致相同的结果。是否存在失败的情况?
- 这两种表达方式在资源使用方面有何不同?
- 强制转换列是否会转换它要比较的每个值,而不是将不等式的右侧转换一次以与该列中的所有值进行比较?
【问题讨论】:
-
PURCHASE_DATE 的数据类型是什么?第二个代码中没有 CAST
-
嘿,抱歉,感谢您的关注,我已更新。这也是一个演员表。 PURCHASE_DATE 也是日期格式,但假设它不是“YYYY-MM-DD”,这就是我需要转换的原因。
-
FORMAT 短语仅在与字符串相互转换时适用。如果 PURCHASE_DATE 是 DATE 数据类型,则不需要 CAST。最好使用 ANSI 日期文字,例如
date'2020-01-01'(始终为 yyyy-mm-dd)进行此类比较。如果必须以字符串形式提供日期,则应使用 CAST 或 TO_DATE(使用适当的 FORMAT)转换为内部 DATE 类型。