【问题标题】:Databricks does not recognize all Oracle transformationsDatabricks 无法识别所有 Oracle 转换
【发布时间】:2020-08-14 16:33:14
【问题描述】:

我正在尝试从 Oracle 转换为 Databricks,没什么复杂的,数据是字符串类型('24 -MAR-11'),我正在尝试将其更改为日期类型以将其转换回另一种格式 ('24 -03-2011') ,但我一直在尝试根据文档查找句子,但找不到我要查找的内容。

我尝试过的替代方法如下:

date_format('24-MAR-11' as 'DD-MON-YY')
to_date('24-MAR-11', 'dd-MON-yy')
cast('24-MAR-11', date)
cast('24-MAR-11', 'dd-MON-yy')

在 Oracle 中有效,在 Databricks 中无效。

请给我推荐什么方法?

提前非常感谢您,我会关注您的cmets!

问候!!

【问题讨论】:

标签: python sql oracle databricks azure-databricks


【解决方案1】:

使用函数to_date(将字符串转换为具有可选日期格式字符串的日期)和date_format,将日期格式化为给定格式字符串来实现您想要的。您的代码中的错误是,to_date 的输入字符串应该是您输入字符串的格式,而不是您希望字符串的格式,即

%py
from pyspark.sql.functions import *

df = spark.createDataFrame([("24 Mar 11",)], ["xdate"])

df.withColumn("xdate1", to_date("xdate", "dd MMM yy")).show()

df.withColumn("xdate2", date_format( to_date("xdate", "dd MMM yy"), "dd-MM-yyyy")).show()

NB 在我第一次调用 to_date 时,我使用的是格式字符串 dd MMM yy,这是您输入字符串 24 Mar 11 的格式。第二次调用date_format 然后以所需格式显示字符串。我的结果:

【讨论】:

  • 抱歉我迟迟没有回复@wBob,非常感谢!!正是我要找的那个功能,非常感谢您的支持,非常感谢! :)
猜你喜欢
  • 2015-04-03
  • 2022-10-15
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多