SPARK的時間函數
package test
import java.util.Date
import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
/**
- Created by fanxiaoxia on 2018/11/28.
*/
object SPARKDATE {
Class.forName(“oracle.jdbc.driver.OracleDriver”)
val url = “jdbc:oracle:thin:test/test@//192.168.1.123:1521/orcl”
def main(args: Array[String]): Unit = {
//加載數據庫中表
val conf = new SparkConf().setAppName(“A”).setMaster(“local[*]”)
val spark = SparkSession.builder().config(conf).getOrCreate()
val jdbcDF = spark.read.format("jdbc").options(
Map("url" -> url,
"user" -> "test1",
"password" -> "test1",
"dbtable" -> "XL_CARD_INFO")).load()
jdbcDF.createOrReplaceTempView("XL_CARD_INFO") //從oracle讀到的數據註冊成臨時表
// val date = new Date() //常規創建日期對象;
//獲取當前時間
// val sql = spark.sql(
// “”"
// |select current_date from XL_CARD_INFO
// “”".stripMargin)
// .show()
// current_timestamp/now()獲取當前時間
// val sql = spark.sql(
// “”"
// |select current_timestamp from XL_CARD_INFO
// “”".stripMargin)
// .show()
//時間戳轉換字符串格式
// val sql = spark.sql(
// “”"
// |select
// |REACH_TIME
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//從日期時間中提取字段
//year,month,day/dayofmonth,hour,minute,second
// val sql = spark.sql(
// “”"
// |select
// |month(TXNDATETIME)
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//打印出來不正確
//dayofweek (1 = Sunday, 2 = Monday, …, 7 = Saturday),dayofyear
// val sql = spark.sql(
// “”"
// |select
// |dayofyear( TXNDATETIME)
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//weekofyear
// val sql = spark.sql(
// “”"
// |select
// |weekofyear( ‘2017-10-03’)
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//trunc截取某部分的日期,其他部分默認爲01
//第二個參數 [“year”, “yyyy”, “yy”, “mon”, “month”, “mm”]
// val sql = spark.sql(
// “”"
// |select
// |trunc(TXNDATETIME,‘year’)
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//date_trunc ["YEAR", "YYYY", "YY", "MON", "MONTH", "MM", "DAY", "DD", "HOUR", "MINUTE", "SECOND", "WEEK", "QUARTER"]
// val sql = spark.sql(
// “”"
// |select
// |date_trunc(TXNDATETIME,‘MONTH’)
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show() //打印報錯
//date_format將時間轉化爲某種格式的字符串
// val sql = spark.sql(
// “”"
// |select
// |date_format(TXNDATETIME,‘y’)
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//1.unix_timestamp返回當前時間的unix時間戳
// val sql = spark.sql(
// “”"
// |select
// |unix_timestamp(TXNDATETIME) as time1
// | from XULINV_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// //2.from_unixtime將時間戳換算成當前時間,to_unix_timestamp將時間轉化爲時間戳
// val t1 = spark.sql("select from_unixtime(time1) from t1 ").show()
//to_date/date將字符串轉化爲日期格式,to_timestamp(Since: 2.2.0)
// val sql = spark.sql(
// “”"
// |select
// |to_timestamp(2017-10-03 09:40:06) as time1
// | from XL_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
//
// val t1 = spark.sql("select * from t1 ").show() --報錯
//1.months_between兩個日期之間的月數
//
// val sql = spark.sql(
// “”"
// |select
// |months_between(TXNDATETIME,REACH_TIME)
// | from XL_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//2. add_months返回日期後n個月後的日期
// val sql = spark.sql(
// “”"
// |select
// |add_months(TXNDATETIME,1)
// | from XL_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//3.last_day(date),next_day(start_date, day_of_week)
// val sql = spark.sql(
// “”"
// |select
// |last_day(TXNDATETIME)
// | from XL_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//4.date_add,date_sub(減)
// val sql = spark.sql(
// “”"
// |select
// |date_sub(TXNDATETIME,1)
// | from XL_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//5.datediff(兩個日期間的天數)
// val sql = spark.sql(
// “”"
// |select
// |datediff(TXNDATETIME,‘2017-10-02’)
// | from XL_CARD_INFO
// “”".stripMargin).createOrReplaceTempView(“t1”)
// val t1 = spark.sql("select * from t1 ").show()
//6.關於UTC時間
val sql = spark.sql(
"""
|select
|from_utc_timestamp(TXNDATETIME,'Asia/Seoul')
| from XL_CARD_INFO
""".stripMargin).createOrReplaceTempView("t1")
val t1 = spark.sql("select * from t1 ").show()
spark.stop()
}
}