Spark-SQL常⽤内置⽇期时间函数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-2511: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-2512: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-2512: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-2512: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-2512: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-2512: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
unix时间戳转换日期格式获取指定⽇期是当年中的第⼏天
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()
结果显⽰:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。