pyspark Databricks SQL代码在同一个笔记本中返回不同的日期格式

y3bcpkx1  于 2023-06-28  发布在  Spark
关注(0)|答案(1)|浏览(102)

当我发布代码时

select as_of_date from myview

我得到以下日期格式yyyyMMdd

但是当我发出以下代码时-在同一个字段上,我得到的日期格式是yyyy-MM-dd。但是,我希望使用与上述select语句相同的格式,即yyyyMMDD

select as_of_date from myview
where as_of_date = last_day(add_months(current_date(),-1)

有人能告诉我如何保留日期格式,即。yyyyMMdd?
我还在PySpark中尝试了以下操作

%python
df = spark.sql("select as_of_date from myview where date_format(as_of_date, 'yyyyMMdd') = date_format(last_day(add_months(current_date(), -1)), 'yyyyMMdd')")

但还是得到yyyy-MM-dd
有什么想法吗
一位成员提出了一个很好的观点。as_of_date是一个字符串(我没有意识到)

我尝试了以下代码,但仍然得到yyyy-MM-dd

pdtvr36n

pdtvr36n1#

使用下面的查询时,获取日期格式yyyy-DD-mm的原因

select as_of_date from myview
where as_of_date = last_day(add_months(current_date(),-1)

因为current_date是一个SQL Date函数。如下图所示。x1c 0d1x为了将“as_of_date”列转换为所需的格式,我尝试了以下两种方法

**第一种方法:**我使用了Date_format,date_format函数用于将日期或时间戳值格式化为特定的字符串表示。它允许将日期或时间戳转换为所需的输出格式。

%sql
select as_of_date from my_table
where as_of_date =  date_format(last_day(add_months(current_date(),-1)), 'yyyyMMdd')

第二种方法:在第二种方法中,我使用了date_trunc。它用于将as_of_date列截断为月份级别。目的是将截断的as_of_date值与截断的当前日期减去一个月进行比较。

from pyspark.sql.functions import last_day, add_months, expr
result = spark.sql("""
SELECT as_of_date
FROM my_table
WHERE  date_trunc('MONTH', to_date(as_of_date, 'yyyyMMdd')) =
date_trunc('MONTH', add_months(current_date(), -1))
""")
result.show()

相关问题