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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

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常用内置日期时间函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。