1

我从一个大的 csv 文件导入的 sql 中有一个大表。

当一列包含格式为 dd/mm/yyyy 的日期信息时,该列被识别为 str。

我试过select TO_DATE('12/31/2015') as date了,但这不起作用,因为 TO_DATE 函数需要 yyyy-mm-dd 格式。

如何在 sql 中将 '12/31/2015' 字符串重新排列为 '2015-12-31' 格式,以便将列类型转换为日期?

我在 sparkSQL(在 databricks 环境中)上执行此操作,因为数据量非常大,update似乎不支持 sql 的关键字。

4

2 回答 2

2

只需重新阅读您的问题;

我建议这样做:

UPDATE table
SET column = Convert(varchar(10), Convert(smalldatetime, column, 103), 120)

这会将列值转换为 smalldatetime,使用英国格式 (dd/mm/yyyy),然后将其转换回 varchar,使用 120 格式 (yyyy-mm-dd);120 格式包含时间信息,但这将被截断,因为它被转换为 varchar(10);

测试它:

SELECT Convert(varchar(10), Convert(smalldatetime, column, 103), 120)
FROM table
于 2016-08-19T05:12:05.683 回答
0

以下链接答案有效 https://forums.databricks.com/answers/12121/view.html

df.withColumn("tx_date", to_date(unix_timestamp($"date", "M/dd/yyyy").cast("timestamp")))

于 2019-10-22T09:51:21.987 回答