Spark-SQL常用内置日期时间函数
生活随笔
收集整理的這篇文章主要介紹了
Spark-SQL常用内置日期时间函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Spark-SQL常用內置日期時間函數
一、獲取當前時間
1、current_date
- 獲取當前日期
- 時間格式:yyyy-MM-dd
結果顯示:
+--------------+ |current_date()| +--------------+ |2020-11-25 | +--------------+2、now()
- 獲取當前日期時間
- 時間格式:yyyy-MM-dd HH:mm:ss.毫秒
結果顯示:
+-----------------------+ |current_timestamp() | +-----------------------+ |2020-11-25 11:02:50.484| +-----------------------+3、current_timestamp
- 獲取當前日期時間
- 結果完全同now()
二、提取時間中的字段
1、year
- 提取時間中的年份
結果顯示:
+-----------------------+ |current_timestamp() | +-----------------------+ |2020-11-25 12:04:28.859| +-----------------------++----+ |year| +----+ |2020| +----+2、month
- 提取時間中的月份
結果顯示:
+-----------------------+ |current_timestamp() | +-----------------------+ |2020-11-25 12:07:44.976| +-----------------------++-----+ |month| +-----+ | 11| +-----+3、day、dayofmonth
- 提取日期中的天
- day 和 dayofmonth 效果完全相同
結果顯示:
+-----------------------+ |current_timestamp() | +-----------------------+ |2020-11-25 12:09:45.178| +-----------------------++---+ |day| +---+ | 25| +---++---+ |day| +---+ | 25| +---+4、hour
- 獲取時間小時
結果顯示:
+-----------------------+ |current_timestamp() | +-----------------------+ |2020-11-25 12:12:58.917| +-----------------------++----+ |hour| +----+ | 12| +----+5、minute
- 獲取時間分鐘數
結果顯示:
+-----------------------+ |current_timestamp() | +-----------------------+ |2020-11-25 12:14:47.916| +-----------------------++------+ |minute| +------+ | 14| +------+6、second
- 獲取時間秒數
結果顯示:
+------+ |second| +------+ | 25| +------+三、一年中第幾天\周\季度
1、dayofyear
- 獲取指定日期是當年中的第幾天
結果顯示:
+------+ |dayNum| +------+ | 330| +------+2、weekofyear
- 獲取指定日期是當年中的第幾周
結果顯示:
+-------+ |weekNum| +-------+ | 48| +-------+3、dayofweek、date_format
- 獲取指定日期是星期幾,可使用獲取當前日期函數
- dayofweek 在hive2.2.0開始引入
- 版本較低的時候可以使用以下方式獲取日期是星期幾
- 注意函數中第二個參數為小寫 u
結果顯示:
+--------+ |weekMany| +--------+ | 3| +--------+4、quarter
- 返回指定日期為第幾季度
- 1到3月為一季度,三個月一個季度
結果顯示:
+------------------------------------------+ |quarter(CAST(current_timestamp() AS DATE))| +------------------------------------------+ | 4| +------------------------------------------+5、trunc
- 選擇年或月,選擇之后的日期用默認值 01 表示
- 第一個參數為不帶時分秒的日期,需寫指定日期,不能用時間函數獲取當前日期
- 第二個參數可選:"year"、"yy"、"month"、"mon"、"mm",否則返回 null
- 這里只處理日期,即結果只顯示日期
結果顯示:
+----------+ |year | +----------+ |2020-01-01| +----------+四、日期時間轉換
1、unix_timestamp
- 返回當前時間的 unix 時間戳
- 可指定日期,指定日期的同時需要指定日期格式
結果顯示:
+----------+ | unix| +----------+ |1606302965| +----------++----------+ | unix| +----------+ |1606233600| +----------+2、to_unix_timestamp
- 將時間轉化為時間戳
- 第一個參數為時間,第二個參數為時間格式
- 可傳入獲取當前日期函數,此時不需要傳入日期格式
- 效果與unix_timestamp相同
3、from_unixtime
- 將時間戳換算成當前時間
- 可自定義輸出日期格式,若不定義則為默認yyyy-MM-dd HH:mm:ss
結果顯示:
+-------------------+ | time| +-------------------+ |2020-11-25 19:24:12| +-------------------+4、to_date、date
- 將字符串轉化為日期格式
- to_date、date效果完全相同
結果顯示:
+----------+ | time| +----------+ |2020-11-25| +----------+五、日期、時間計算
1、months_between
- 返回兩個日期之間的月數
結果顯示:
+----------+ | monNum| +----------+ |0.89760581| +----------+2、add_months
- 返回日期后n個月后的日期
結果顯示:
+--------------+ |afterMonthTime| +--------------+ | 2020-12-11| +--------------+3、date_add(加)、date_sub(減)
- 返回相加(減)n 天后的日期
結果顯示:
+----------+ | addDay| +----------+ |2020-11-28| +----------++----------+ | addDay| +----------+ |2020-11-22| +----------+4、datediff
- 兩個日期間的天數,即兩個日期相減
結果顯示:
+----+ |diff| +----+ | 5| +----+5、last_day(date)
- 返回指定時間當前月份的最后一天
結果顯示:
+----------+ | last_day| +----------+ |2020-10-31| +----------+6、next_day(start_date, day_of_week)
- 查找指定日期后第一個星期幾(第二個參數)
- 即第二個參數為星期幾的英文縮寫
結果顯示:
+----------+ | next_day| +----------+ |2020-11-25| +----------+總結
以上是生活随笔為你收集整理的Spark-SQL常用内置日期时间函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC中的文件读写技术
- 下一篇: 马的种类(七)