Spark SQL 时间格式处理

初始化Spark Sql

Scala 复制代码
package pbcp_2023.clear_data

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.{current_date, current_timestamp}

object twe_2 {
  def main(args: Array[String]): Unit = {
//新建SparkConf
    val con = new SparkConf().setMaster("local[*]").setAppName("one")
  //设置权限
    System.setProperty("HADOOP_USER_NAME", "root")
//新建Spark Sql
    val sc = new SparkSession.Builder()
      .config(con)
      .enableHiveSupport()
      .getOrCreate()
   import sc.implicits._
    val list = List("date").toDF()


  }
  }

1.current_date和current_timestamp

current_date:取得当前日期

current_timestamp: 取得当期时间日期

Scala 复制代码
   import sc.implicits._
    val list = List("date").toDF()
//    current_date 当前日期
//    current_timestamp 当前时间日期
    list.withColumn("current_date(日期)",current_date())
    .withColumn("current_timestamp",current_timestamp())

2.获取各种时间格式

  1. current_timestamp(): 这个函数用于获取当前的日期和时间戳。
  2. year(col("local_date")): 这个函数会提取出"local_date"列中的年份。
  3. month(col("local_date")): 这个函数会提取出"local_date"列中的月份。
  4. quarter(col("local_date")): 这个函数会根据"local_date"列中的日期信息,将日期划分为哪个季度。
  5. weekofyear(col("local_date")): 这个函数会提取出"local_date"列中该年度的第几周。
  6. dayofmonth(col("local_date")): 这个函数会提取出"local_date"列中该月的第几天。
  7. dayofyear(col("local_date")): 这个函数会提取出"local_date"列中该年的第几天。
  8. hour(col("local_date")): 这个函数会提取出"local_date"列中的小时数。
  9. minute(col("local_date")): 这个函数会提取出"local_date"列中的分钟数。
  10. second(col("local_date")): 这个函数会提取出"local_date"列中的秒数。

3.时间格式之间的转换--from_unixtime 和 unix_timestamp

函数:

Scala 复制代码
list2.withColumn("new_date",from_unixtime(unix_timestamp("[要转换的列名]","[要转换的列的格式]"),"[要转换为的格式]").as("date") ).show()

1.from_unixtime 函数通常用于将Unix时间戳转换为日期和时间格式。它接受一个Unix时间戳作为输入,并返回一个表示特定日期和时间的字符串。

2.unix_timestamp函数通常用于将日期和时间转换为Unix时间戳。它接受一个日期和时间作为输入,并返回一个表示该日期和时间的Unix时间戳。

理解是先用unix_timestamp将指点格式转换为时间戳,再用from_unixtime将时间戳转换为你想要的时间格式!所以这两个一般是配合使用的

实例:

Scala 复制代码
    //加入题目要求将 yyyyMMdd 格式数据转换成 yyyy-MM-dd HH:mm:dd
    val list2 = List("20231125").toDF("date")  //初始化列
      list2.withColumn("new_date",from_unixtime(unix_timestamp(col("date"),"yyyyMMdd"),"yyyy-MM-dd HH:mm:ss").as("date") )
        .show()
相关推荐
中科天工2 分钟前
智装升级:工业4.0时代的高效包装革命
大数据·人工智能·智能
爱敲代码的憨仔11 分钟前
Elasticsearch入门
大数据·elasticsearch·搜索引擎
曲幽14 分钟前
告别重复劳动:SQL Server存储过程实战手册,从入门到高效协作
sql·select·cursor·declare·trigger·procedure
pusheng202516 分钟前
破局跨境电商“安全盲区”:一氧化碳报警器的风险与可靠感知之道
大数据
Alter123017 分钟前
海南椰子鸡和宁夏滩羊的拼多多“漂流”:透视地域特产的数字进化论
大数据·人工智能
汽车仪器仪表相关领域20 分钟前
全组分精准捕获,台架研发中枢:MEXA-ONE发动机尾气测量装置项目实战全景
大数据·人工智能·功能测试·单元测试·压力测试·可用性测试
qyresearch_20 分钟前
全球干燥水果和蔬菜市场:健康消费浪潮下的增长引擎与产业重构
大数据·人工智能·物联网
LJ979511124 分钟前
媒体发布+时代:Infoseek如何用AI重构你的内容分发网络
大数据·人工智能
有Li29 分钟前
立结合解剖学知识的潜在空间建模下的群体水平脑结构连接性/文献速递-基于人工智能的医学影像技术
大数据·论文阅读·文献·医学生
TDengine (老段)32 分钟前
TDengine R 语言连接器入门指南
大数据·数据库·物联网·r语言·时序数据库·tdengine·涛思数据