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)

往期回顾

如何搭建数据指标监测体系?
数据分析必知系列之线性规划问题(ROI &Python 求解线性规划问题)
一个SQL,程序实现多日留存率计算
一个案例掌握五大关键数据分析思维
还在为数据分析职业发展路径迷茫? 一文读懂数据分析、数据挖掘、算法、数据开发工程师的异同
抖音日活3.2亿,可能有 3.3亿用户在同一天内使用抖音吗?(泊松分布的Python实现)

和“数说123”一起,在数据科学领域中成长!
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值