目前,我正在使用配置单元sql将一个数据库从sql\ U 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里不起作用。发布预期结果
psdt:thanks for 请注意,这是我在stack中问的第一个问题,我的母语不是英语,如果我有语法错误,请原谅。
1条答案
按热度按时间6tr1vspr1#
limit 1
没有order by
由于并行执行导致行的顺序是随机的,因此从一个运行到另一个运行可能会产生不确定的结果,某些因素可能会以某种方式影响结果,但无法保证获得相同的行。发生了什么-我猜你收到了不同的行,并且该行中的日期已损坏,这就是为什么会返回一些奇怪的结果。
此外,还可以使用其他转换方法:
结果: