在sparkdataframe中添加列

嗨,我正在尝试在我的spark数据框中添加一列,并根据现有的dataframe列计算值。我正在写下面的代码。

    val df1=spark.sql("select id,dt1,salary frm dbdt1.tabledt1")

    val df2=df1.withColumn("new_date",WHEN (month(to_date(from_unixtime(unix_timestamp(dt1), 'dd-MM- yyyy'))) 
    IN (01,02,03)) THEN 
    CONCAT(CONCAT(year(to_date(from_unixtime(unix_timestamp(dt1), 'dd-MM- yyyy')))-1,'-'),
    substr(year(to_date(from_unixtime(unix_timestamp(dt1), 'dd-MM-yyyy'))),3,4))
    .otherwise(CONCAT(CONCAT(year(to_date(from_unixtime(unix_timestamp(dt1), 'dd-MM- yyyy'))),'-')
    ,SUBSTR(year(to_date(from_unixtime(unix_timestamp(dt1), 'dd-MM-yyyy')))+1,3,4)))) 

但是它总是显示出问题错误:未封闭的字符文字。有人可以指导我如何添加此新列或修改现有代码。