把Hive日期称为 date '2020-08-25' 与公正 '2020-08-25' 没有日期这个词?是两种不同的数据类型吗?还是完全一样。我可以在where语句中添加以下内容:
date '2020-08-25'
'2020-08-25'
where somedate<=date'2020-08-25'
与。
where somedate<='2020-08-25'
bwleehnv1#
date '2020-08-25' 是日期类型的文本。 '2020-08-25' -是字符串文本。字符串和日期可以隐式转换,因此两个where子句在功能上是相同的。根据列数据类型,可能会发生隐式转换。最好使用相同的类型以避免隐式转换。此外,日期可以压缩在4字节整数二进制格式。见hive-3910
h9a6wy2h2#
date'2020-08-25' 是标准日期文字:它生成 date 数据类型。另一方面, '2020-08-25' 是一个文本字符串(表示日期,但可以是其他任何内容)。现在,在你的语言中, predicate 的最佳选择是什么 where 条款?它取决于要比较的列的数据类型。如果你有 date 列,则我建议使用文字日期。否则,您将依赖数据库的能力来理解您的意思,并隐式地将字符串转换为日期。每个数据库都有自己的一组规则来处理这种情况:在最坏的情况下,它可能会做出错误的决定并决定进行字符串比较,这将需要将所有存储的值转换为字符串(这取决于数据库规范)-这将破坏查询的性能。如果碰巧将日期存储为字符串(这通常表示设计不好),那么字符串比较就可以了。
date'2020-08-25'
date
where
2条答案
按热度按时间bwleehnv1#
date '2020-08-25'
是日期类型的文本。'2020-08-25'
-是字符串文本。字符串和日期可以隐式转换,因此两个where子句在功能上是相同的。根据列数据类型,可能会发生隐式转换。最好使用相同的类型以避免隐式转换。
此外,日期可以压缩在4字节整数二进制格式。见hive-3910
h9a6wy2h2#
date'2020-08-25'
是标准日期文字:它生成date
数据类型。另一方面,
'2020-08-25'
是一个文本字符串(表示日期,但可以是其他任何内容)。现在,在你的语言中, predicate 的最佳选择是什么
where
条款?它取决于要比较的列的数据类型。如果你有
date
列,则我建议使用文字日期。否则,您将依赖数据库的能力来理解您的意思,并隐式地将字符串转换为日期。每个数据库都有自己的一组规则来处理这种情况:在最坏的情况下,它可能会做出错误的决定并决定进行字符串比较,这将需要将所有存储的值转换为字符串(这取决于数据库规范)-这将破坏查询的性能。如果碰巧将日期存储为字符串(这通常表示设计不好),那么字符串比较就可以了。