数字日期格式转换yyyymmdd_SQL常见六大字符串格式时间处理11方法

SQL中日期处理非常常见,尤其是字符串格式的时间分区。如果数据是日期格式,那么直接用库中函数处理日期,比较简单。但当日期是字符串时,就需要做一些预处理工作。

本文介绍常见字符串日期的处理方法。以impala为例。

01 将日期字符串20200119转化为bigint时间戳: unix_timestamp (string date,格式)

如:unix_timestamp (‘20200119’,'yyyyMMdd')

返回:

1579363200

02 将日期字符串20200102转化为日期格式:

from_unixtime(unix_timestamp(string date, string pattern))

如:from_unixtime(unix_timestamp(‘20200119’,'yyyyMMdd'))

返回:

2020-01-19 00:00:00

03 字符串格式日期取年份:from_unixtime(unix_timestamp(sting date,格式),年格式)

如取年份:from_unixtime(unix_timestamp(‘20200119’,'yyyyMMdd'),'yyyy') as year

或者 substr(‘20200119’, 1, 4) as year

取月份同理。

04 计算日期时间差:datediff(timestamp enddate, timestamp startdate)

如:datediff(from_unixtime(unix_timestamp(dt,'yyyyMMdd')), '2019-12-30')

05 取工作日:模运算——取余函数:prod(datediff(enddate, startdate)+1, 除数)

如:pmod(datediff(date, '2018-01-01') + 1, 7) between 1 and 5

06 将字符串日期加1天,再转化为字符串

to_timestamp(string date, string pattern): 将字符串转化为时间戳

date_add(timestamp, int n days):日期加n天

如:from_unixtime(unix_timestamp(date_add(to_timestamp(string date, 'yyyyMMdd'), 1)), 'yyyyMMdd')

文末彩蛋

字符串处理之定位字符位置

locate(‘符号’,字段名,第n个)返回第n个符号的位置

如:截取字符串中第2个#后面的8位字符串日期

SUBSTRING(字段名,locate('#',字段名,2)+1)

和“数说123”一起,在数据科学领域中成长!

02acc0e038ae5bea78790101bcd47c46.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值