字符串到日期格式转换导致 NULL - Databricks
Posted
技术标签:
【中文标题】字符串到日期格式转换导致 NULL - Databricks【英文标题】:String to Date Format Conversion resulting in NULL - Databricks 【发布时间】:2021-05-10 11:18:43 【问题描述】:我已按以下格式保存日期:
+-------------------------+
| timex (varchar) |
+-------------------------+
| 20200303 |
+-------------------------+
我希望在 Databricks SQL 中将值输出/转换为日期/时间格式。
应该是:
+-------------------------+
| timex |
+-------------------------+
| 2020-03-03 00:00:00.000 |
+-------------------------+
试过了:
select to_timestamp(timex)
--> 结果为 1970-xx-xx
select to_timestamp(timex, 'yyyy/MM/dd HH:mm:ss.ssssss')
--> 表示参数 1 中的数据类型应该是字符串或日期
select to_timestamp(CAST(timex AS STRING), 'yyyy/MM/dd HH:mm:ss.ssssss')
--> 空
select to_date(timex)
--> 空
SQL 中的等价物 - convert(datetime,cast(timex as nvarchar),103)
如果我使用 cast(timex as string) as xx --> 它可以工作 但是,我使用 to_timestamp(cast(timex as string), 'yyyyMMdd') as t --> 它给出了 null。
我也尝试将字符串格式化为 to_timestamp(format_string('%8d',cast(timex as string)), 'yyyyMMdd') --> 出现异常:IllegalFormatConversionException
【问题讨论】:
【参考方案1】:您需要使用to_timestamp
转换为时间戳,然后使用date_format
转换为所需的格式:
select date_format(to_timestamp(format_string('%8d', timex), 'yyyyMMdd'), 'yyyy-MM-dd HH:mm:ss.SSS')
from mytable;
【讨论】:
不,这也是在 Databricks 中给出 NULL。 timex 可能是一个整数。尝试先转换为字符串。请参阅编辑后的答案。 我试过这个 - date_format(to_timestamp(CAST(timex AS STRING), 'yyyyMMdd'), 'yyyy-MM-dd HH:mm:ss.SSS') as xyz 。还是给NULL 你能显示select cast(timex as string)
的结果吗?
你也能显示select date_format(to_timestamp('20200303', 'yyyyMMdd'), 'yyyy-MM-dd HH:mm:ss.SSS')
的结果吗?以上是关于字符串到日期格式转换导致 NULL - Databricks的主要内容,如果未能解决你的问题,请参考以下文章