MaxCompute SQL使用小技巧之时间日期处理

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 业务需求分析中经常会对时间日期进行处理,MaxComputer中也有很多关于日期的处理函数,文章就是对这些内置函数相互嵌套使用达到分析要求的分析

我们分析需求时经常会遇到如:最近一周、最近一个月、月初、月末、本季度...等等的时间修饰词,这类修饰词就构成了派生指标。使用Maxcomputer的童鞋都知道,其内置函数和Hive还是有些区别的,接下来我们就看看如何使用Maxcomputer内置日期函数。

  • 时间戳与日期的相互转换
select from_unixtime(1629785626);--2021-08-24 14:13:46select unix_timestamp(datetime'2021-08-24 14:13:46');--1629785626
  • yyyymmdd与yyyy-mm-dd之间相互转换
select to_char(to_date('20210824','yyyymmdd'),'yyyy-mm-dd');--2021-08-24select to_char(to_date('2021-08-24','yyyy-mm-dd'),'yyyymmdd');--20210824
  • 获取年份
selectyear('2021-08-24 14:13:46');--2021
  • 获取月份
select datepart(datetime'2021-08-24 14:13:46','mm');--8select month('2021-08-24 14:13:46');--8
  • 获取日
select datepart(datetime'2021-08-24 14:13:46','dd');--24select day('2021-08-24 14:13:46');--24
  • 获取小时
select datepart(datetime'2021-08-24 14:13:46','hh');--14select hour('2021-08-24 14:13:46');--14
  • 获取分钟
select datepart(datetime'2021-08-24 14:13:46','mi');--13select minute('2021-08-24 14:13:46');--13
  • 获取秒
select datepart(datetime'2021-08-24 14:13:46','ss');--46select second('2021-08-24 14:13:46');--46
  • 本周第几天
select weekday(to_date('2021-08-24','yyyy-mm-dd'));--1 周一返回的是0,周日为6
  • 本月第几天
select dayofmonth('2021-08-24');--24
  • 本年第几周
select weekofyear(to_date('2021-08-24','yyyy-mm-dd'));--34
  • 本年第几天
select datediff(to_date('2021-08-24','yyyy-mm-dd'),datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'yyyy'));--235
  • 本年第几季度
select quarter('2021-08-24');--3
  • 本周第一天
select date_add(next_day('2021-08-24','MO'),-7);--2021-08-23
  • 本周最后一天
select date_add(next_day('2021-08-24','MO'),-1);--2021-08-29
  • 最近一周
select date_add('2021-08-24',-7);--2021-08-17
  • 已知日期返回周几,2018-01-01刚好是周一
select case pmod(datediff('2021-08-24','2018-01-01'),7)            when 0 then '周一'            when 1 then '周二'            when 2 then '周三'            when 3 then '周四'            when 4 then '周五'            when 5 then '周六'            when 6 then '周日'        end ;--周二
  • 上周一
select date_add(next_day('2021-08-24','MO'),-14);--2021-08-16
  • 上周末
select date_add(next_day('2021-08-24','MO'),-8);--2021-08-22
  • 本月第一天
select datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'mm');--2021-08-01 00:00:00select date_sub('2021-08-24',dayofmonth('2021-08-24')-1);--2021-08-01
  • 本月最后一天
select lastday(to_date('2021-08-24','yyyy-mm-dd'));--2021-08-31select last_day('2021-08-24');--2021-08-31
  • 上个月月末
select dateadd(to_date(last_day('2021-08-24'),'yyyy-mm-dd'),-1,'mm');--2021-07-31 00:00:00
  • 上个月初
select add_months(date_sub('2021-08-24',dayofmonth('2021-08-24')-1),-1);--2021-07-01
  • 上个月同期
select add_months(to_date('2021-08-24','yyyy-mm-dd'),-1);--2021-07-24
  • 本季度第一天
select dateadd(dateadd(datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'year'),quarter(to_date('2021-08-24','yyyy-mm-dd'))*3,'month'),-1,'mm');--2021-09-01 00:00:00
  • 本季度最后一天
select dateadd(dateadd(datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'year'),quarter(to_date('2021-08-24','yyyy-mm-dd'))*3,'month'),-1,'dd');--2021-09-30 00:00:00
  • 上个季度第一天
select dateadd(dateadd(datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'year'),(quarter(to_date('2021-08-24','yyyy-mm-dd'))-1)*3,'month'),-1,'mm');--2021-06-01 00:00:00
  • 上个季度末一天
select dateadd(dateadd(datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'year'),(quarter(to_date('2021-08-24','yyyy-mm-dd'))-1)*3,'month'),-1,'dd');--2021-06-30 00:00:00
  • 本年第一天
select datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'year');--2021-01-01 00:00:00
  • 本年最后一天
select date_add(add_months(datetrunc(to_date('2021-08-24','yyyy-mm-dd'),'year'),12),-1);--2021-12-31
  • 去年同期
select add_months(to_date('2021-08-24','yyyy-mm-dd'),-12);--2020-08-24

关于日期之间的转换有很多中方式,不限于以上方式,希望能帮助到小伙伴

拜了个拜

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
21天前
|
SQL 机器学习/深度学习 分布式计算
MaxCompute产品使用问题之如何调整改变SQL查询的严格性
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
21天前
|
SQL 分布式计算 前端开发
MaxCompute操作报错合集之SQL脚本设置参数set odps.mapred.reduce.tasks=18;没有生效,是为什么
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
19天前
|
SQL 大数据
常见大数据面试SQL-每年总成绩都有所提升的学生
一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题: 问题1:每年每门学科排名第一的学生 问题2:每年总成绩都有所提升的学生
|
21天前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之使用spark.sql执行rename分区操作,遇到任务报错退出的情况,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
10天前
|
SQL 机器学习/深度学习 自然语言处理
大数据SQL助手:告别繁琐数据处理,轻松搞定SQL查询!
大数据SQL助手:告别繁琐数据处理,轻松搞定SQL查询!
16 0
|
22天前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之执行sql时,出现Cannot read properties of undefined (reading 'start')错误提示,该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
22天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如何使用MaxCompute SQL客户端删除分区数据
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
22天前
|
SQL 分布式计算 DataWorks
MaxCompute产品使用问题之如何通过临时查询功能来书写和运行SQL语句
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
27天前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
5天前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。