【数据开发】HiveSQL 临时表&分步执行(with, as )与时间函数(时间戳unix_timestamp)

1、分步执行(with...as...)

Hive SQL中的WITH...AS...语句可以用于分步执行,即将一个大的查询语句拆分成多个小的查询语句,每个小的查询语句都可以使用WITH...AS...语句定义一个临时表,然后在后面的查询语句中使用这些临时表。

用法1,增加一张临时表/临时步骤

sql 复制代码
with table1 as (
   select key from src where key = '5'
)
select * from table1;

用法2,增加并列临时表

sql 复制代码
with 
table1 as (
	select key from table2 where key = '5'
),
table2 as (
	select key from src where key = '5'
)
select * from (
	select key from table1
)record;

用法3,增加嵌套临时表(最常用)

sql 复制代码
with tmp2 as (
    with tmp1 as (
        select * from xxx
    )
    select * from tmp1
)
select * from tmp2;

入门的例子:

sql 复制代码
WITH temp1 AS (
  SELECT column1, column2
  FROM table1
  WHERE column3 = 'value'
),
temp2 AS (
  SELECT column4, column5
  FROM table2
  WHERE column6 = 'value'
)
SELECT temp1.column1, temp2.column4
FROM temp1
JOIN temp2
ON temp1.column2 = temp2.column5;

在上面的示例中,我们将大的查询语句分成了两个小的查询语句,分别定义了两个临时表temp1和temp2,然后在最后的查询语句中使用了这两个临时表。

使用WITH...AS...语句可以让查询语句更加清晰易懂,同时也可以提高查询效率,因为每个临时表只需要被计算一次,然后就可以在后面的查询语句中反复使用。

2、时间函数

Hive SQL中有许多日期和时间函数,可以用于处理日期和时间类型的数据。以下是一些常用的日期和时间函数:

  1. YEAR(date):返回日期中的年份。

  2. MONTH(date):返回日期中的月份。

  3. DAY(date):返回日期中的日。

  4. HOUR(timestamp):返回时间戳中的小时。

  5. MINUTE(timestamp):返回时间戳中的分钟。

  6. SECOND(timestamp):返回时间戳中的秒。

  7. DATE_FORMAT(date, format):将日期格式化为指定的格式。

  8. FROM_UNIXTIME(unix_timestamp, format):将Unix时间戳转换为日期格式。

  9. TO_DATE(date):将日期时间戳转换为日期。

  10. UNIX_TIMESTAMP([date, format]):将日期转换为Unix时间戳。

  11. CURRENT_DATE():返回当前日期。

  12. CURRENT_TIMESTAMP():返回当前时间戳。

以下是一些示例:

sql 复制代码
-- 返回当前日期
SELECT CURRENT_DATE();

-- 返回当前时间戳
SELECT CURRENT_TIMESTAMP();

-- 返回日期中的年份
SELECT YEAR('2022-01-01');

-- 返回日期中的月份
SELECT MONTH('2022-01-01');

-- 返回日期中的日
SELECT DAY('2022-01-01');

-- 返回时间戳中的小时
SELECT HOUR('2022-01-01 12:34:56');

-- 返回时间戳中的分钟
SELECT MINUTE('2022-01-01 12:34:56');

-- 返回时间戳中的秒
SELECT SECOND('2022-01-01 12:34:56');

-- 将日期格式化为指定的格式
SELECT DATE_FORMAT('2022-01-01', 'yyyy-MM-dd');

-- 将Unix时间戳转换为日期格式
SELECT FROM_UNIXTIME(1641026400, 'yyyy-MM-dd HH:mm:ss');

-- 将日期时间戳转换为日期
SELECT TO_DATE('2022-01-01 12:34:56');

-- 将日期转换为Unix时间戳
SELECT UNIX_TIMESTAMP('2022-01-01 12:34:56');

这些函数可以帮助我们更方便地处理日期和时间类型的数据。

参考资料:1, 2

相关推荐
MM_MS1 分钟前
Halcon图像锐化和图像增强、窗口的相关算子
大数据·图像处理·人工智能·opencv·算法·计算机视觉·视觉检测
焦耳热科技前沿1 小时前
中科大EMA:3秒焦耳热一步合成双功能催化剂用于甲醇氧化协同高效制氢
大数据·人工智能·自动化·能源·材料工程
向量引擎小橙1 小时前
推理革命与能耗:AI大模型应用落地的“冰山成本”与破局之路
大数据·人工智能·深度学习·集成学习
一条咸鱼_SaltyFish2 小时前
[Day15] 若依框架二次开发改造记录:定制化之旅 contract-security-ruoyi
java·大数据·经验分享·分布式·微服务·架构·ai编程
l1t2 小时前
DeepSeek辅助编写的利用位掩码填充唯一候选数方法求解数独SQL
数据库·sql·算法·postgresql
TMT星球2 小时前
星动纪元携人形机器人家族亮相CES 2026,海外业务占比达50%
大数据·人工智能·机器人
chen<>2 小时前
Git原理与应用
大数据·git·elasticsearch·svn
焦耳热科技前沿3 小时前
西华大学Adv. Sci.:超高温焦耳热冲击制备拓扑缺陷碳,用于催化碳纳米管可控生长
大数据·人工智能·能源·材料工程·电池
冰暮流星3 小时前
sql语句之select语句的基本使用
数据库·sql·mysql
故乡de云3 小时前
Google Cloud与AWS大数据AI服务对比:2026年企业选型指南
大数据·人工智能·aws