【发布时间】:2021-06-17 05:08:57
【问题描述】:
目前我正在使用 HIVE_SQL 将数据库从 SQL_SERVER 迁移到 SPARK。
我在尝试将数字传递给日期格式时遇到问题。我发现答案是:
from_unixtime(unix_timestamp(cast(DATE as string) , 'dd-MM-yyyy'))
当我执行这个查询时,它给我带来了数据,请注意我放置了一个不同于 FECHA 列名称的别名:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(FECHA AS STRING ) ,'yyyyMMdd'), 'yyyy-MM-dd') AS FECHA_1
FROM reportes_hechos_avisos_diarios
LIMIT 1
| FECHA_1 |
| -------- |
| 2019-01-01 |
但是当我使用与列名相同的别名时,它会给我带来一个不一致的信息:
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(CAST(FECHA AS STRING ) ,'yyyyMMdd'), 'yyyy-MM-dd') AS FECHA
FROM reportes_hechos_avisos_diarios
LIMIT 1
| FECHA |
| -------- |
| 2.019 |
我知道简单的答案是,放置一个与列名不同的别名,但我在 Tableau 中有一个从该查询提供数据的实现,并且更改此列很复杂,因为基本上我必须更改所有实现所以我需要保留列名。此查询在 SQL SERVER 中适用于我,但我不知道为什么在 hive 中不起作用。 Issue ExpectedResult
PSDT:感谢您的关注,这是我在堆栈中提出的第一个问题,我的母语不是英语,如果有语法错误,请见谅。
【问题讨论】:
-
输出 2.019 对我来说没有任何意义。您确定这是您使用的查询吗?
-
是的,这就是我拍照的问题。我输入了原始问题。
-
你能举一个例子来说明 FECHA 的价值吗?为什么不按原样保留 FECHA 列并更改 Tableau 中的数据类型。 Tableau 以整数格式识别日期,这样您就不必处理函数和别名。
-
FECHA 采用这种格式 yymmdd->20200101
-
ibb.co/zn6TcVv 有一个例子。
标签: sql apache-spark date hive hiveql