Spark-SQL常用内置日期时间函数

一、获取当前时间

1、current_date

  • 获取当前日期
  • 时间格式:yyyy-MM-dd
 spark.sql("select current_date").show(false)

结果显示:

+--------------+
|current_date()|
+--------------+
|2020-11-25    |
+--------------+

2、now()

  • 获取当前日期时间
  • 时间格式:yyyy-MM-dd HH:mm:ss.毫秒
 spark.sql("select now()").show(false)

结果显示:

+-----------------------+
|current_timestamp()    |
+-----------------------+
|2020-11-25 11:02:50.484|
+-----------------------+

3、current_timestamp

  • 获取当前日期时间
  • 结果完全同now()
 spark.sql("select current_timestamp").show(false)

二、提取时间中的字段

1、year

  • 提取时间中的年份
    spark.sql("select now()").show(false)spark.sql("select year(now()) as year").show()

结果显示:

+-----------------------+
|current_timestamp()    |
+-----------------------+
|2020-11-25 12:04:28.859|
+-----------------------++----+
|year|
+----+
|2020|
+----+

2、month

  • 提取时间中的月份
    spark.sql("select now()").show(false)spark.sql("select month(now()) as month").show()

结果显示:

+-----------------------+
|current_timestamp()    |
+-----------------------+
|2020-11-25 12:07:44.976|
+-----------------------++-----+
|month|
+-----+
|   11|
+-----+

3、day、dayofmonth

  • 提取日期中的天
  • day 和 dayofmonth 效果完全相同
    spark.sql("select now()").show(false)spark.sql("select day(now()) as day").show()spark.sql("select dayofmonth(now()) as dayofmonth").show()

结果显示:

+-----------------------+
|current_timestamp()    |
+-----------------------+
|2020-11-25 12:09:45.178|
+-----------------------++---+
|day|
+---+
| 25|
+---++---+
|day|
+---+
| 25|
+---+

4、hour

  • 获取时间小时
    spark.sql("select now()").show(false)spark.sql("select hour(now()) as hour").show()

结果显示:

+-----------------------+
|current_timestamp()    |
+-----------------------+
|2020-11-25 12:12:58.917|
+-----------------------++----+
|hour|
+----+
|  12|
+----+

5、minute

  • 获取时间分钟数
    spark.sql("select now()").show(false)spark.sql("select minute(now()) as minute").show()

结果显示:

+-----------------------+
|current_timestamp()    |
+-----------------------+
|2020-11-25 12:14:47.916|
+-----------------------++------+
|minute|
+------+
|    14|
+------+

6、second

  • 获取时间秒数
    spark.sql("select second(2020-11-25 12:16:25.172) as second").show()

结果显示:

+------+
|second|
+------+
|    25|
+------+

三、一年中第几天\周\季度

1、dayofyear

  • 获取指定日期是当年中的第几天
 spark.sql("select dayofyear(now()) as dayNum").show()

结果显示:

+------+
|dayNum|
+------+
|   330|
+------+

2、weekofyear

  • 获取指定日期是当年中的第几周
 spark.sql("select weekofyear(now()) as weekNum").show()

结果显示:

+-------+
|weekNum|
+-------+
|     48|
+-------+

3、dayofweek、date_format

  • 获取指定日期是星期几,可使用获取当前日期函数
  • dayofweek 在hive2.2.0开始引入
  • 版本较低的时候可以使用以下方式获取日期是星期几
  • 注意函数中第二个参数为小写 u
 spark.sql("select date_format(now(),'u') as weekMany").show()

结果显示:

+--------+
|weekMany|
+--------+
|       3|
+--------+

4、quarter

  • 返回指定日期为第几季度
  • 1到3月为一季度,三个月一个季度
 spark.sql("select quarter(now())").show()

结果显示:

+------------------------------------------+
|quarter(CAST(current_timestamp() AS DATE))|
+------------------------------------------+
|                                         4|
+------------------------------------------+

5、trunc

  • 选择年或月,选择之后的日期用默认值 01 表示
  • 第一个参数为不带时分秒的日期,需写指定日期,不能用时间函数获取当前日期
  • 第二个参数可选:"year"、"yy"、"month"、"mon"、"mm",否则返回 null
  • 这里只处理日期,即结果只显示日期
 spark.sql("select trunc('2020-11-25','YEAR') as year").show(false)

结果显示:

+----------+
|year      |
+----------+
|2020-01-01|
+----------+

四、日期时间转换

1、unix_timestamp

  • 返回当前时间的 unix 时间戳
  • 可指定日期,指定日期的同时需要指定日期格式
 spark.sql("select unix_timestamp() as unix").show()spark.sql("select unix_timestamp('2020-11-25','yyyy-MM-dd') as unix").show()

结果显示:

+----------+
|      unix|
+----------+
|1606302965|
+----------++----------+
|      unix|
+----------+
|1606233600|
+----------+

2、to_unix_timestamp

  • 将时间转化为时间戳
  • 第一个参数为时间,第二个参数为时间格式
  • 可传入获取当前日期函数,此时不需要传入日期格式
  • 效果与unix_timestamp相同
spark.sql("select to_unix_timestamp(now()) as unix").show()
spark.sql("select to_unix_timestamp('2020-11-25','yyyy-MM-dd') as unix").show()

3、from_unixtime

  • 将时间戳换算成当前时间
  • 可自定义输出日期格式,若不定义则为默认yyyy-MM-dd HH:mm:ss
spark.sql("select from_unixtime('1606303452') as time").show()

结果显示:

+-------------------+
|               time|
+-------------------+
|2020-11-25 19:24:12|
+-------------------+

4、to_date、date

  • 将字符串转化为日期格式
  • to_date、date效果完全相同
 spark.sql("select to_date('2020-11-25') as time").show()spark.sql("select to_date('2020-11-25','yyyy-MM-dd') as time").show()

结果显示:

+----------+
|      time|
+----------+
|2020-11-25|
+----------+

五、日期、时间计算

1、months_between

  • 返回两个日期之间的月数
 spark.sql("select months_between(now(),'2020-10-29') as monNum").show()

结果显示:

+----------+
|    monNum|
+----------+
|0.89760581|
+----------+

2、add_months

  • 返回日期后n个月后的日期
 spark.sql("select add_months('2020-11-11',1) as afterMonthTime").show()

结果显示:

+--------------+
|afterMonthTime|
+--------------+
|    2020-12-11|
+--------------+

3、date_add(加)、date_sub(减)

  • 返回相加(减)n 天后的日期
 spark.sql("select date_add(now(),3) as addDay").show()spark.sql("select date_sub(now(),3) as addDay").show()

结果显示:

+----------+
|    addDay|
+----------+
|2020-11-28|
+----------++----------+
|    addDay|
+----------+
|2020-11-22|
+----------+

4、datediff

  • 两个日期间的天数,即两个日期相减
 spark.sql("select datediff(now(),'2020-11-20') as diff").show()

结果显示:

+----+
|diff|
+----+
|   5|
+----+

5、last_day(date)

  • 返回指定时间当前月份的最后一天
 spark.sql("select last_day('2020-10-20') as last_day").show()

结果显示:

+----------+
|  last_day|
+----------+
|2020-10-31|
+----------+

6、next_day(start_date, day_of_week)

  • 查找指定日期后第一个星期几(第二个参数)
  • 即第二个参数为星期几的英文缩写
 spark.sql("select next_day('2020-11-20','we') as next_day").show()

结果显示:

+----------+
|  next_day|
+----------+
|2020-11-25|
+----------+

Spark-SQL常用内置日期时间函数相关推荐

  1. spark sql uv_内置函数_SparkSQL学习 - 编程那点事

    Spark 1.5.x版本引入的内置函数在Spark 1.5.x版本,增加了一系列内置函数到DataFrame API中,并且实现了code-generation的优化.与普通的函数不同,DataFr ...

  2. CAPL内置的时间函数

    CAPL内置的时间函数 在CAPL中我们要经常和时间打交道,为了方便的写CAPL脚本,所以我整理了Vector官方提供的与时间有关的函数,并对常用的进行简单说明. 本文主体部分摘录了Vector的官方 ...

  3. python常用内置库时间,日期与JSON转换

    日期与时间 datetime是Python处理日期和时间的标准库. from datetime import datetimeif __name__ == "__main__":c ...

  4. oracle中or的替函数,Oracle常用内置Or自定义函数-SQL宝典

    一 .函数使用说明 1.NLSSORT(列名,排序规则) 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M   按照部首(第一顺序) ...

  5. MySQL 学习笔记(3)— 字符串函数、数值函数、日期时间函数、流程函数、聚集函数以及分组数据

    1. 字符串函数 MySQL 的常用函数包括字符串函数.数值函数.日期时间函数.流程函数等. SELECT ascii("abc"),char(97),concat("h ...

  6. PHP 中日期时间函数 date() 用法总结

    [导读] date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考.格式化日期date() 函数的第一个参数规定了如何格式化日期 时间.它 ...

  7. php 中日期时间函数大全,PHP 中日期时间函数 date() 用法总结

    [导读] date()是我们常用的一个日期时间函数,下面我来总结一下关于date()函数的各种形式的用法,有需要学习的朋友可参考.格式化日期date() 函数的第一个参数规定了如何格式化日期 时间.它 ...

  8. MySQL学习笔记_7_MySQL常用内置函数

    MySQL常用内置函数 说明: 1)可以用在SELECT/UPDATE/DELETE中,及where,orderby,having中 2)在函数里将字段名作为参数,变量的值就是字段所对应的每一行的值. ...

  9. 零基础学Python(第二十二章 常用内置函数)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 本章内容为: ...

  10. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...

    昨日内容回顾 1.三种引入方式1.行内js <div onclick = 'add(3,4)'></div>//声明一个函数function add(a,b){}2.内接js& ...

最新文章

  1. Elasticsearch内存分配设置详解
  2. August 14, 2009 - Choice
  3. ubuntu改变@后面的主机名
  4. 使用android studio查看内存,Android Studio Profiler使用心得 检测内存泄露问题
  5. 【Python】青少年蓝桥杯_每日一题_5.15_打印 99 乘法表
  6. TCP/IP总结(4)TCP之数据传输过程
  7. 今晚直播 | ICML 2021论文解读:基于Cox-MLP模型的二阶段共形预测
  8. 大话oraclerac集群、高可用性、备份与恢复_数腾Oracle RAC数据库灾备解决方案
  9. c语言 void**类型转换,void *和其他指针的转化
  10. 34.MySQL的高级安装和升级
  11. BZOJ2768: [JLOI2010]冠军调查
  12. Android Launcher 应用开发
  13. 电缆直径和电缆流过电流计算以及对照表
  14. Simulink转化为低版本文件
  15. 2019年入职体检那些事
  16. 三角函数科学计算机在线应用,Scientific Calculator插件,在线科学计算器
  17. 蒟蒻打CF#729div 2
  18. CentOS报错:There are no enabled repos
  19. (2)二叉树由后序(LRD)和中序(LDR)得到前序(DLR)
  20. Linux系统下如果查看用户的UID和GID

热门文章

  1. Java实现大写金额转小写金额
  2. smartsvn 使用
  3. java学生管理系统论文_(定稿)毕业论文基于java的学生信息管理系统设计报告(完整版)最新版...
  4. 修改保存hosts文件
  5. 固高运动控制卡教程_基于固高运动控制卡的关节阻抗控制设计
  6. 安全基础教育第二季第1集:屡战屡败的找回密码
  7. Unity中加载本地图片
  8. DSOFramer的类别和安装
  9. 三菱GXWorks2 程序写入CPU/从CPU读取程序
  10. 图表控件MsChart使用demo