sql - 如何在配置单元中对字符串类型的日期进行分组
问题描述
我有一个日期列,数据类型是字符串,如下所示,
我的查询是: select cast(substr(date,1,10),date) date , count(date) from table group by date;
date
1 1/1/1970 12:00:00 AM
2 1/1/1970 12:00:00 AM
3 1/1/1970 12:00:00 AM
4 1/1/1970 12:00:00 AM
5 1/1/1970 12:00:00 AM
6 1/1/1970 12:00:00 AM
7 1/1/1970 12:00:00 AM
8 1/1/1970 12:00:00 AM
9 1/1/1970 12:00:00 AM
10 1/1/1970 12:00:00 AM
所以当我使用按日期分组时,同一天仍然有多行,我想我可能需要将数据类型转换为日期,但仍然无法正常工作,有人可以帮忙吗?
解决方案
Hive 中的日期格式为yyyy-MM-dd
如果您想将字符串字段转换为日期,请使用
hive> select date(from_unixtime(unix_timestamp(`date`, 'MM/dd/yyyy hh:mm:ss a'),'yyyy-MM-dd')) `date`,count(*) from dd group by date(from_unixtime(unix_timestamp(`date`, 'MM/dd/yyyy hh:mm:ss a'),'yyyy-MM-dd'));
+-------------+------+--+
| date | _c1 |
+-------------+------+--+
| 1970-01-01 | 10 |
+-------------+------+--+
在此语句中,我们将日期字段转换为日期数据类型并将所有日期分组。
(或者)
如果您只想分组,请MM/dd/yyyy
使用拆分功能并分组
hive> select split(`date`,' ')[0] `date`,count(*) from dd group by split(`date`,' ')[0];
+-----------+------+--+
| date | _c1 |
+-----------+------+--+
| 1/1/1970 | 10 |
+-----------+------+--+
推荐阅读
- angularjs - 如何在 AngularJS 中设置默认选择值?
- python - python按距离从列表中删除矩形
- firebase - Firebase Firestore REST 请求 - 查询和过滤
- python - Python 3 文本文件 - 我想在文件 1 中每行文本的末尾添加添加用户输入,然后将新行复制到文件 2 中
- sql - 连接表查询失败并出现错误代码 - 将 varchar 值“XYZ”转换为数据类型 tinyint 时转换失败
- javascript - html Button Hitbox 在 Safari(移动设备和 Mac)上移动
- javascript - JsSIP在真机上的实现
- php - 如何在我的 show.blade.php 中显示具有特定角色且必须获得批准的用户?
- ruby-on-rails - 在创建一个对象后将创建多个对象的代码放在哪里
- google-apps-script - 谷歌表格使用脚本编辑器链接到谷歌团队日历