Jde julian日期到pyspark中的日历日期

x4shl7ld  于 2023-02-09  发布在  Apache
关注(0)|答案(1)|浏览(198)

我有一个带有列名ILDGL的 Dataframe df,它以jde julian日期格式记录日期。我尝试将julian日期转换为日历日期并存储在ILDGL_Normal列中,但没有成功。

df = df.withColumn("ILDGL_Normal", to_date(concat(lit("20"), col("ILDGL")), "yyMMdd"))

儒略日期123002表示2023-01-02,000001表示1900-01-01。我如何将jde企业儒略日期转换为正常的日期格式YYYY-MM-DD?

xv8emn3q

xv8emn3q1#

JDE儒略日期格式为CYYDDD
C -世纪,Y -年,D -一年中的某一天
我们可以忽略世纪,使用to_date函数将日期转换为yyyy-MM-dd,然后通过检查centruy添加年份。

spark.conf.set("spark.sql.legacy.timeParserPolicy", "LEGACY")

df = spark.createDataFrame([('123002',), ('201002',), ('301002',)], ['jde_julian_date'])

df.withColumn("std_date",
              add_months(to_date(substring("jde_julian_date", 2, 5), 'yyDDD'),
                         when(substring("jde_julian_date", 0, 1) > 1,
                              (substring("jde_julian_date", 0, 1) - 1) * 100 * 12).
                         otherwise(0))).show()

+---------------+----------+
|jde_julian_date|  std_date|
+---------------+----------+
|         123002|2023-01-02|
|         201002|2101-01-02|
|         301002|2201-01-02|
+---------------+----------+

相关问题