2016-08-19 16 views
1

我有一个大的sql表,我从一个大的csv文件导入。如何将字符串格式为dd/mm/yyyy的str类型转换为日期?

当列中包含格式为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环境下)上做了这个,因为数据非常大,其中sql关键字update似乎不被支持。

回答

2

只是重新读你的问题;

我建议这样的:

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

此转换列值为smalldatetime,采用英国格式(日/月/年),然后将其转换回为varchar,采用120格式(YYYY- MM-DD); 120格式包含时间信息,但是这将被截断,因为它被作为varchar(10)转换回来;

测试:

SELECT Convert(varchar(10), Convert(smalldatetime, column, 103), 120) 
FROM table 
+0

谢谢。这不是一个公平的问题,因为在此之前我没有说清楚。看起来sparkSQL不支持update命令。 (我可能是错的)在这种情况下的任何建议? – Semihcan

+0

我刚刚尝试了测试语句,并得到以下错误: SQL语句中的错误:AnalysisException:无法识别'varchar''(''10'在函数说明中的输入;第1行pos 15 – Semihcan

+1

Hi Semihcan,我试过了我在我的PC上写的声明,并没有问题,所以我猜这是一个平台兼容性问题;我检查了您的标记,并看到您在使用直接SQL时使用了apache-spark-sql;我的道歉我可能无法进一步帮助。 –

相关问题