SPARK的時間函數

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

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章