添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
欢乐的柳树  ·  Tommy Bahama: Men's & ...·  6 月前    · 
俊逸的杯子  ·  基隆市英語資源中心·  1 年前    · 

默认格式是 yyyy-MM-dd HH:mm:ss

yyyy 年 可简化为yy
MM 月 可简化为M
dd 日 可简化为d

HH 小时 可简化为H
mm 分钟 可简化为m
ss 秒 可简化为s

其中,除了秒大小写 通用外, 其他计时单位 大小写不通用 如果写错 则输出 null。

本次介绍三个函数分别是:

1.to_date(列名, ‘yyyy/MM/dd HH:mm:ss’) 返回 Date类型

将string类型字段转化为date 标准格式为"yyyy-MM-dd"(spark的date格式精确到天)

其中"yyyy/MM/dd HH:mm:ss" 为列数据本身的格式 可以不符合常见的时间定义格式 如

  • 注 : 无论你写不写 时分秒 格式,spark中的date格式 都精确到分钟 即 我的输入为 2020~10/10 10:10:10 经过to_date后 变成 2020-10-10 具体可参考下文中的例子

2.date_format(列名, ‘yyyy/MM/dd HH:mm:ss’) 返回String类型

将时间标准格式按照自定义输入格式进行转化。若包含 时分秒 则以0代替。

输入类型可以自己定义,如"yyyy=MM=dd HH/mm:ss"

3.to_timestamp(列名) 返回Timestamp类型

将标准时间格式(yyyy-MM-dd)数据(既可以是String类型,也可以是Date类型) 转化为标准时间戳类型:“yyyy-MM-dd HH-mm-ss” 没有时分秒 则自动补0

import spark.implicits._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql.DataFrame
var data = Seq(
  ("0", "ming", "tj","2019~09-06 17:15:15", "2002"),
  ("0", "haha", "hegang","2019~09-08 15:15:15", "10010")
).toDF("label", "name", "live","START_TIME", "AMOUNT")
data.show()

使用 to_date() 函数

data.createOrReplaceTempView("data")
var colName = "START_TIME"
var test1 = spark.sql(s"select to_date($colName, 'yyyy~MM-dd HH:mm:ss') as times from data")
test1.show()
var type_test1 = test1.dtypes
type_test1.foreach(println)

to_date不仅能在sparksql中使用,也可以作为函数,如下所示:

var test2 = data.withColumn(colName,(to_date(col(colName),"yyyy~MM-dd HH:mm:ss")))
test2.show()
var type_test2 = test2.dtypes
type_test2.foreach(println)

使用date_format() 函数

var test3 = spark.sql(s"select date_format(to_date($colName, 'yyyy~MM-dd HH:mm:ss'),'yyyy=MM=dd HH/mm:ss') as times from data")
test3.show()
var type_test3 = test3.dtypes
type_test3.foreach(println)

date_format不仅能在sparksql中使用,也可以作为函数,如下所示:

var test4 = data.withColumn(colName,(date_format(to_date(col(colName),"yyyy~MM-dd HH:mm:ss"), "yyyy/MM/dd HH:mm:ss")))
test4.show()
var type_test4 = test4.dtypes
type_test4.foreach(println)

使用to_timestamp() 函数

构建表data1, 时间格式为标准格式,类型为String:

data1.createOrReplaceTempView("data1") var colName = "START_TIME" var test5 = spark.sql(s"select to_timestamp(to_date($colName,'yyyy-MM-dd HH:mm:ss')) as times from data1") // 与上面运行结果一直 // var test5 = spark.sql(s"select to_timestamp($colName) as times from data1") // 将TimestampType 转为StringType // var test5 = spark.sql(s"select cast(to_timestamp($colName) as String) as times from data1") test5.show() var type_test5 = test5.dtypes type_test5.foreach(println)

to_timestamp不仅能在sparksql中使用,也可以作为函数,如下所示:

// var test6 = data1.withColumn(colName,(to_timestamp(col(colName)))) // 将TimestampType 转为StringType var test6 = data1.withColumn(colName, col(colName).cast(StringType)) test6.show() var type_test6 = test6.dtypes type_test6.foreach(println)

参考资料:

1.https://www.cnblogs.com/mylittlecabin/p/11692363.html

2.https://stackoverflow.com/questions/40763796/convert-date-from-string-to-date-format-in-dataframes

3.https://www.nuomiphp.com/eplan/29850.html

4.https://stackoverflow.com/questions/40763796/convert-date-from-string-to-date-format-in-dataframes

5.https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions

6.https://www.jianshu.com/p/a87ac9f827e4

7.https://cloud.tencent.com/developer/ask/225235

8.https://blog.csdn.net/qq_33283716/article/details/81043264

https://www.cnblogs.com/mylittlecabin/p/11692363.htmlhttps://stackoverflow.com/questions/40763796/convert-date-from-string-to-date-format-in-dataframeshttps://www.nuomiphp.com/eplan/29850.html
PostgreSQL 的 to_timestamp 函数可以将字符串或整数转换为时间戳。它接受两个参数,第一个参数是要转换的值,第二个参数是该值的格式。例如,to_timestamp('2022-01-01', 'YYYY-MM-DD') 将返回 2022 年 1 月 1 日的时间戳。 private static void top(SparkSession sparkSession, Dataset<Row> logDS, Dataset<Row> userDataset) { String startTi...
1.由于之前比较熟悉hive,于是用spark.sql写,其中包含hive的一些函数,如 unix_timestamp(regexp_replace(time, '[\\x2b]', ' '))是把表中的time里的'+'换成‘ ’,然后再换成时间戳的形式,但是原来的hql的写法执行时数据没有实现转换,hive为: val df1 = spark.sql(s"select distinc...
org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: SemanticException [Error 10015]: Line 1:15 Arguments length mismatch 1.1时区设置 set spark.sql.session.timeZone=GMT+8; --设置为东八区时间 set spark.sql.session.timeZone=UTC; --设置为UTC时间 1.2时间戳格式化为日期 from_unixtime(floor(ts/1000),'yyyy-MM-dd') --注释,使用此方法转换时间时,默认使用的是集群的时区(时区设置参考1.1) --次函数的时间戳为10位的
val lines = ssc.socketTextStream("localhost", 9999) val windowedWordCounts = lines.window(Seconds(4), Seconds(2)) windowedWordCounts.foreachRDD( (rdd, time) => { println(Instant.ofEpochMilli(time.mill...
python Selenium 使用 报错AttributeError: ‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘ python报错 AttributeError: ‘mpz‘ object has no attribute ‘to_bytes‘