date - 如何在 Hive 查询中将“yyyy-m-dd”中的字符串日期转换为“yyyy-mm-dd”?
问题描述
我上下搜索,但找不到任何有效的东西。
我有一个日期以这种格式存储为字符串:'2021-9-01',因此月份列中没有前导零。这是尝试选择最大日期时的一个问题,因为它将 9 月解释为大于 10 月。
每当我运行试图转换它的东西时,它实际上永远不会完成。选择 * from... 时,我可以拉回 1 行,但这无法完成:
select unix_timestamp(bad_date, 'yyyy-m-dd') from mytable
我正在使用 hive 查询,所以不确定如何进行此转换,以便我实际上可以让 10 月(本月)显示为最大日期?
解决方案
月份的正确模式是MM
. mm
是分钟。
from_unixtime(unix_timestamp(bad_date, 'yyyy-M-dd'),'yyyy-MM-dd')
另一种方法是使用 lpad 进行拆分和连接:
select concat_ws('-',splitted[0], lpad(splitted[1],2,0),splitted[2])
from
(
select split('2021-9-01','-') splitted
)s
结果:
2021-09-01
推荐阅读
- protocol-buffers - 依赖于带有自定义规则的外部仓库的原型
- python - Python Tkinter 更新标签文本将旧文本保留在那里,直到函数退出
- python - 如何通过 python Tkinter 移动列表框的项目
- android - 错误“模拟器:进程以退出代码 -1073741819 (0xC0000005) 完成”
- php - PHP中的JSON数据提取
- mongodb - ValidationError:配置文件验证失败:_id:需要路径`_id`
- c# - 列表内列表,我想在 c# Linq 或 Lambda 中对列表内的项目进行分页
- c# - 无参数动作响应带参数的请求
- angular - Ng2-smart-table 单元格背景颜色取决于内容
- jquery - 如何使用 RegExp 和 .replace() 函数从标签中删除宽度属性