hive将2020-02-02格式日期改成20200202格式
时间: 2024-09-19 12:12:25 浏览: 47
Hive中可以使用内置的函数`date_format()`或者`to_date()`来转换日期格式。如果你想把"2020-02-02"这样的日期字符串转换成"20200202"这种四位数的年月日格式,你可以使用`substr()`函数配合`split()`函数先分割出各个部分,然后拼接起来。例如:
```sql
SELECT CONCAT(YEAR(from_unixtime(unix_timestamp('2020-02-02', 'yyyy-MM-dd'), 'unixepoch')), LPAD(MONTH(from_unixtime(unix_timestamp('2020-02-02', 'yyyy-MM-dd'), 'unixepoch')) + 1, 2, '0'), DAY(from_unixtime(unix_timestamp('2020-02-02', 'yyyy-MM-dd'), 'unixepoch'))) AS new_date
FROM dual;
```
这里假设你的日期存储为字符串格式并且使用的是'yyyy-MM-dd'的格式。这个查询首先通过`from_unixtime()`和`unix_timestamp()`转换日期到Unix时间戳,然后再转换回字符串并按照所需的格式排列。
相关问题
hive将日期字段etl_dt格式改成如:20200917改成2020-09-17
在Hive中,如果你有一个日期字段`etl_dt`,其格式是"yyyyMMdd",你可以使用内置函数`from_unixtime()`或者`substr()`以及`concat()`函数来转换它。这里是一个示例查询:
```sql
SELECT
CONCAT(YEAR(from_unixtime(unix_timestamp(etl_dt, 'yyyyMMdd'))), '-',
LPAD(MONTH(from_unixtime(unix_timestamp(etl_dt, 'yyyyMMdd'))), 2, '0'), '-',
LPAD(DAY(from_unixtime(unix_timestamp(etl_dt, 'yyyyMMdd'))), 2, '0'))
FROM your_table;
```
这个查询首先将`etl_dt`转换为Unix时间戳(unix_timestamp()函数),然后使用`from_unixtime()`将其转换回日期格式,最后使用`CONCAT()`连接年、月、日,并使用`LPAD()`函数保证月份和日子始终有两位数。
hive将字符串etl_dt格式改成如:20200917改成日期2020-09-17
Hive中可以使用内置函数`from_unixtime()`或`date_format()`来将字符串转换成日期格式。假设你的字符串`etl_dt`是以"yyyyMMdd"的形式存储的,你可以通过以下SQL语句将其转换:
```sql
SELECT date_format(unix_timestamp(etl_dt, 'yyyyMMdd'), 'yyyy-MM-dd') AS new_date
FROM your_table;
```
这里,`unix_timestamp(etl_dt, 'yyyyMMdd')`会将字符串转换为Unix时间戳,然后`date_format()`函数再将这个时间戳转换为你想要的"YYYY-MM-DD"格式。
如果你的Hive版本支持`cast()`函数,另一种做法是直接转换:
```sql
SELECT cast(etl_dt as timestamp) as new_date
FROM your_table
DATE_FORMAT(new_date, 'yyyy-MM-dd');
```
在这个例子中,先将字符串转换为timestamp类型,然后再转换回日期格式。
阅读全文