gpt4 book ai didi

hive - Hive 中的日期比较

转载 作者:行者123 更新时间:2023-12-04 02:46:07 30 4
gpt4 key购买 nike

我正在使用 Hive,我有一个结构如下的表:

CREATE TABLE t1 (
id INT,
created TIMESTAMP,
some_value BIGINT
);

我需要找到 t1 中的每一行不到 180 天。即使表中存在与搜索谓词匹配的数据,以下查询也不会产生任何行。
select * 
from t1
where created > date_sub(from_unixtime(unix_timestamp()), 180);

在 Hive 中执行日期比较的合适方法是什么?

最佳答案

怎么样:

where unix_timestamp() - created < 180 * 24 * 60 * 60

日期数学通常是最简单的,如果你能用实际的时间戳值来做的话。

还是您希望它只在整日中断?然后我认为问题在于您如何在整数和字符串之间来回转换。尝试:
where created > unix_timestamp(date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),180),'yyyy-MM-dd')

遍历每个 UDF:
  • unix_timestamp()返回一个整数:自纪元以来的当前时间(以秒为单位)
  • from_unixtime(,'yyyy-MM-dd')转换为给定格式的字符串,例如'2012-12-28'
  • date_sub(,180)从该字符串中减去 180 天,并返回一个相同格式的新字符串。
  • unix_timestamp(,'yyyy-MM-dd')将该字符串转换回 int

  • 如果这一切都变得太麻烦了,您可以随时编写一个 UDF 来自己完成。

    关于hive - Hive 中的日期比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14071589/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com