gpt4 book ai didi

sql - 如何从当前日期减去一天然后在 Hive 中转换为字符串

转载 作者:可可西里 更新时间:2023-11-01 14:15:37 32 4
gpt4 key购买 nike

情况是这样的。我正在尝试使用选择语法来获取最后一天的数据(今天我们有 21.10,因此我应该有 20.10 日期查询的数据将成为 Talend 中 ETL 过程的一部分,所以我不能简单地做 其中日期 = '2016-10-20')问题是数据源中的所有列都是 VARCHAR 或 STRING 类型——日期也是。源代码在 Hive Hadoop 上。

我的代码:

select 
cast(to_date(from_unixtime(unix_timestamp(dzien ,'yyyyMMdd'), 'yyyy-MM-dd')) as date),
count(ns_utc) as ILOSC_ODSLON
from portal.portal_data
where
portal_data.opl_ev_ty is null
and portal_data.opl_ev_as is null
and cast(to_date(from_unixtime(unix_timestamp(dzien ,'yyyyMMdd'), 'yyyy-MM-dd')) as date) = CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day

GROUP BY
cast(to_date(from_unixtime(unix_timestamp(dzien ,'yyyyMMdd'), 'yyyy-MM-dd')) as date)

使用该代码查询除了列名称外什么都不返回。问题可能出在这部分 = CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day

我做了一些测试。当我运行这个查询时

select CAST(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP()))as date) - interval '1' day

结果是 2016-10-20 00:00:00.0 部分 00:00:00.0 可能会破坏我的查询,因为在主查询中而不是 = CAST(TO_DATE(FROM_UNIXTIME (UNIX_TIMESTAMP()))as date) - interval '1' day 我输入条件 = '2016-10-20' 结果符合预期。

你能指导我如何解决这个问题吗?

我使用 SQL Workbench 而不是 Hue

最佳答案

一旦你解析了日期,然后使用 hive 中可用的 date_sub 函数

date_sub(string startdate, int days) 

date_sub('2008-12-31', 1) = '2008-12-30'

您甚至可以点击下面的链接。

https://www.qubole.com/resources/cheatsheet/hive-function-cheat-sheet/

关于sql - 如何从当前日期减去一天然后在 Hive 中转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40177849/

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