日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2023/12/9 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark-SQL常用内置日期时间函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Spark-SQL常用內(nèi)置日期時(shí)間函數(shù)

一、獲取當(dāng)前時(shí)間

1、current_date

  • 獲取當(dāng)前日期
  • 時(shí)間格式:yyyy-MM-dd
spark.sql("select current_date").show(false)

結(jié)果顯示:

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

2、now()

  • 獲取當(dāng)前日期時(shí)間
  • 時(shí)間格式:yyyy-MM-dd HH:mm:ss.毫秒
spark.sql("select now()").show(false)

結(jié)果顯示:

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

3、current_timestamp

  • 獲取當(dāng)前日期時(shí)間
  • 結(jié)果完全同now()
spark.sql("select current_timestamp").show(false)

二、提取時(shí)間中的字段

1、year

  • 提取時(shí)間中的年份
spark.sql("select now()").show(false)spark.sql("select year(now()) as year").show()

結(jié)果顯示:

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

2、month

  • 提取時(shí)間中的月份
spark.sql("select now()").show(false)spark.sql("select month(now()) as month").show()

結(jié)果顯示:

+-----------------------+ |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()

結(jié)果顯示:

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

4、hour

  • 獲取時(shí)間小時(shí)
spark.sql("select now()").show(false)spark.sql("select hour(now()) as hour").show()

結(jié)果顯示:

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

5、minute

  • 獲取時(shí)間分鐘數(shù)
spark.sql("select now()").show(false)spark.sql("select minute(now()) as minute").show()

結(jié)果顯示:

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

6、second

  • 獲取時(shí)間秒數(shù)
spark.sql("select second(2020-11-25 12:16:25.172) as second").show()

結(jié)果顯示:

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

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

1、dayofyear

  • 獲取指定日期是當(dāng)年中的第幾天
spark.sql("select dayofyear(now()) as dayNum").show()

結(jié)果顯示:

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

2、weekofyear

  • 獲取指定日期是當(dāng)年中的第幾周
spark.sql("select weekofyear(now()) as weekNum").show()

結(jié)果顯示:

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

3、dayofweek、date_format

  • 獲取指定日期是星期幾,可使用獲取當(dāng)前日期函數(shù)
  • dayofweek 在hive2.2.0開始引入
  • 版本較低的時(shí)候可以使用以下方式獲取日期是星期幾
  • 注意函數(shù)中第二個(gè)參數(shù)為小寫 u
spark.sql("select date_format(now(),'u') as weekMany").show()

結(jié)果顯示:

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

4、quarter

  • 返回指定日期為第幾季度
  • 1到3月為一季度,三個(gè)月一個(gè)季度
spark.sql("select quarter(now())").show()

結(jié)果顯示:

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

5、trunc

  • 選擇年或月,選擇之后的日期用默認(rèn)值 01 表示
  • 第一個(gè)參數(shù)為不帶時(shí)分秒的日期,需寫指定日期,不能用時(shí)間函數(shù)獲取當(dāng)前日期
  • 第二個(gè)參數(shù)可選:"year"、"yy"、"month"、"mon"、"mm",否則返回 null
  • 這里只處理日期,即結(jié)果只顯示日期
spark.sql("select trunc('2020-11-25','YEAR') as year").show(false)

結(jié)果顯示:

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

四、日期時(shí)間轉(zhuǎn)換

1、unix_timestamp

  • 返回當(dāng)前時(shí)間的 unix 時(shí)間戳
  • 可指定日期,指定日期的同時(shí)需要指定日期格式
spark.sql("select unix_timestamp() as unix").show()spark.sql("select unix_timestamp('2020-11-25','yyyy-MM-dd') as unix").show()

結(jié)果顯示:

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

2、to_unix_timestamp

  • 將時(shí)間轉(zhuǎn)化為時(shí)間戳
  • 第一個(gè)參數(shù)為時(shí)間,第二個(gè)參數(shù)為時(shí)間格式
  • 可傳入獲取當(dāng)前日期函數(shù),此時(shí)不需要傳入日期格式
  • 效果與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

  • 將時(shí)間戳換算成當(dāng)前時(shí)間
  • 可自定義輸出日期格式,若不定義則為默認(rèn)yyyy-MM-dd HH:mm:ss
spark.sql("select from_unixtime('1606303452') as time").show()

結(jié)果顯示:

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

4、to_date、date

  • 將字符串轉(zhuǎn)化為日期格式
  • 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()

結(jié)果顯示:

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

五、日期、時(shí)間計(jì)算

1、months_between

  • 返回兩個(gè)日期之間的月數(shù)
spark.sql("select months_between(now(),'2020-10-29') as monNum").show()

結(jié)果顯示:

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

2、add_months

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

結(jié)果顯示:

+--------------+ |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()

結(jié)果顯示:

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

4、datediff

  • 兩個(gè)日期間的天數(shù),即兩個(gè)日期相減
spark.sql("select datediff(now(),'2020-11-20') as diff").show()

結(jié)果顯示:

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

5、last_day(date)

  • 返回指定時(shí)間當(dāng)前月份的最后一天
spark.sql("select last_day('2020-10-20') as last_day").show()

結(jié)果顯示:

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

6、next_day(start_date, day_of_week)

  • 查找指定日期后第一個(gè)星期幾(第二個(gè)參數(shù))
  • 即第二個(gè)參數(shù)為星期幾的英文縮寫
spark.sql("select next_day('2020-11-20','we') as next_day").show()

結(jié)果顯示:

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

總結(jié)

以上是生活随笔為你收集整理的Spark-SQL常用内置日期时间函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。