文章 查看内容

Spark日期和时间函数使用案例

Spark日期和时间函数使用案例

81 0 函数专题 2024-7-11 16:26 发布者: 观小凡

本文提供Spark日期格式转换、日期时间计算、时区换算等多个案例供您学习。
 

案例一:文本日期转换为标准日期

文本日期

标准格式

函数

07/30/2021

2021-07-30

to_date([文本日期],'MM/dd/yyyy')

2021/7/30 13:30:00

2021-07-30 13:30:00

to_timestamp([文本日期],'yyyy/M/dd HH:mm:ss')

2021/7/30 01:30 PM

2021-07-30 13:30:00

to_timestamp([文本日期],'yyyy/M/dd hh:mm a')

2021年7月30日

2021-07-30

to_date([文本日期],'yyyy年M月d日')

2021-07-30T16:00:00.000Z

2021-07-31 08:00:00

from_utc_timestamp([文本日期],'GMT+8')

2021-07-30T17:25:53+00:00

2021-07-31 09:25:53

from_utc_timestamp([文本日期],'GMT+8')

July 30, 2021

2021-07-30

to_date([文本日期],'MMMM dd, yyyy')

Aug 8, 2021

2021-08-08

to_date([文本日期],'MMM d, yyyy')

20210808121600

2021-08-08 12:16:00

to_timestamp([文本日期],'yyyyMMddHHmmss')

案例二:标准日期转换为文本日期

日期

目标格式(文本)

函数

2021-08-08 15:16:00

2021-08

left(string([日期]),7)

202108 (数值)

year([日期])*100+month([日期])

08-08

substr(string([日期]),6,5)

15:16

date_format([日期], 'HH:mm')

03:16 PM

date_format([日期], 'hh:mm a')

Aug 8, 2021

date_format([日期],'MMM d, yyyy')

Sunday

date_format([日期],'EEEE')

2021年8月8日

date_format([日期],'yyyy年M月d日')

2021-08-08 15:16:00 (+08:00)

date_format([日期],'yyyy-MM-dd HH:mm:ss (XXX)')


案例三: 时长计算

场景:

      数据集里一个字段为事件开始时间, 另一个字段为事件持续时间(分钟), 不同事件持续时间不同, 需要计算事件结束时间。此时用 [字段]+ INTERVAL 1 MINUTE这种方法不能计算出结束时间。

实现思路:

      时间戳 unix_timestamp 是把时间转换成一个以秒为单位计算得到的数值,可以方便地对时间戳进行数学计算。最后再把计算结果格式转换回时间类型 timestamp。反之,计算两个时间的时间差也可以用同样方式。

实现方式:(任选其一)

timestamp(unix_timestamp([开始时间])+[持续时间]*60);
to_timestamp(to_unix_timestamp([开始时间])+[持续时间]*60)

效果:

案例四:时区转换

场景:

原来时间为东八区时间,需要转换为东九区时间, 偏移 1 个时区。

实现思路:

把当前的东八区时间暂时当做世界标准时间,计算偏移 1 个时区的时间;或者用 convert_timezone 函数指定目标时区。

实现方式:(任选其一)

from_utc_timestamp([东八区时间],'UTC+1'); 
from_utc_timestamp([东八区时间],'GMT+1');
convert_timezone('Asia/Tokyo',[东八区时间])

效果:

转换前:2021-08-08 15:16:00

转换后:2021-08-08 16:16:00


案例五:取每月的第二个周二、周三的日期

场景:

从一张日期表里,找出每月的第二个周二、周三的日期(观远学堂月度产品培训日)。

实现方式:

1. 新建计算字段「周天」得到每天是星期几:dayofweek([日期]) -1

2. 新建计算字段「周数」得到日期在每个月的第几个自然周内:date_format([日期],'F')

3. 筛选「周天」的范围为:大于等于 2 小于等于 3,或者选择筛选 2 和 3;

4. 筛选「周数」为 2,得到一年内所有月的第二个周二和周三的日期。

效果:


路过

雷人

握手

鲜花

鸡蛋

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部