hive日期:date'yyyy-mm-dd'和'yyyy-mm-dd'有什么区别?

dfuffjeb  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(521)

把Hive日期称为 date '2020-08-25' 与公正 '2020-08-25' 没有日期这个词?是两种不同的数据类型吗?还是完全一样。我可以在where语句中添加以下内容:

where somedate<=date'2020-08-25'

与。

where somedate<='2020-08-25'
bwleehnv

bwleehnv1#

date '2020-08-25' 是日期类型的文本。 '2020-08-25' -是字符串文本。
字符串和日期可以隐式转换,因此两个where子句在功能上是相同的。根据列数据类型,可能会发生隐式转换。最好使用相同的类型以避免隐式转换。
此外,日期可以压缩在4字节整数二进制格式。见hive-3910

h9a6wy2h

h9a6wy2h2#

date'2020-08-25' 是标准日期文字:它生成 date 数据类型。
另一方面, '2020-08-25' 是一个文本字符串(表示日期,但可以是其他任何内容)。
现在,在你的语言中, predicate 的最佳选择是什么 where 条款?它取决于要比较的列的数据类型。
如果你有 date 列,则我建议使用文字日期。否则,您将依赖数据库的能力来理解您的意思,并隐式地将字符串转换为日期。每个数据库都有自己的一组规则来处理这种情况:在最坏的情况下,它可能会做出错误的决定并决定进行字符串比较,这将需要将所有存储的值转换为字符串(这取决于数据库规范)-这将破坏查询的性能。
如果碰巧将日期存储为字符串(这通常表示设计不好),那么字符串比较就可以了。

相关问题