date - 如何获得一个日期前 20 天的格式:YYYYMMDD
问题描述
如何在一个日期格式前获得 20 天:YYYYMMDD
?功能date_sub()
似乎不起作用。
例如'20180912'
在 Hive 中获取 20 天前的日期。
我正在使用date_sub()
按日期连接两个表。
select a.*,b.*
from table1
left join
table2
on
from_unixtime(unix_timestamp(date1,'yyyymmdd'))=date_sub(date2,20)
并且什么都不返回。
解决方案
您使用的格式是错误的。大写/小写很重要。正确的格式是“yyyyMMdd”。
Date_sub 需要 yyyy-MM-dd 才能正常工作,必要时进行转换。
select date_sub(from_unixtime(unix_timestamp('20180912','yyyyMMdd')),20) ;
OK
2018-08-23
Cast as timestamp
产生错误的结果 (1970 年),这可能是我的 Hive 版本(1.2.1)中的一个问题:
select cast(unix_timestamp('20180912','yyyyMMdd') as timestamp);
OK
1970-01-18 18:51:50.4
用于 from_unixtime(unix_timestamp('20180912','yyyyMMdd'))
转换,它工作正常。
推荐阅读
- c++ - 使用重载运算符 [] 更改结构的值
- numpy - 如何找到经过训练的 CNN/ANN 模型的位值(精度)?
- c - 在 C 中以规范顺序排列多项式
- post - 试图在 php 中读取 python 发送的 Post 请求
- sql-server - PowerShell :: SQL SELECT 仅返回第一行
- node.js - 使用 axios 请求 node.js api 问题
- pine-script - Pine Script - 向上和向下趋势的多色线
- .net-5 - 发布 Angular 11 应用程序时,object(...) 不是函数
- node.js - 在 Node js 中连接到 vpn
- react-native - 反应本机键盘关闭不起作用