SSIS中GETDATE()转字符串报错:无法转换为支持类型
解决SSIS中GETDATE()转字符串的报错问题
嘿RV,我来帮你搞定这个SSIS表达式的问题!你遇到的错误是因为直接用(DT_STR,29,1252) GETDATE()这种强制转换方式,在SSIS里对DT_DBTIMESTAMP(GETDATE()返回的类型)转DT_STR时,容易出现类型兼容性或者格式长度匹配的问题。下面给你几个靠谱的解决方案:
使用CONVERT函数明确指定格式
这是SSIS里转换日期到字符串最稳妥的方式,通过指定格式代码来确保转换后的字符串格式和长度匹配:CONVERT(DT_STR, 29, 1252, GETDATE(), 121)这里的
121对应ODBC标准的yyyy-MM-dd HH:mm:ss.fff格式,29的长度完全能容纳这个格式的字符串,不会出现截断或类型不兼容的问题。用FORMAT函数自定义格式(SSIS 2012+适用)
如果你需要更灵活的日期格式,可以用FORMAT函数先生成DT_WSTR类型的字符串,再转成DT_STR:(DT_STR,29,1252) FORMAT(GETDATE(), "yyyy-MM-dd HH:mm:ss.fff", "en-US")这个方法能让你自由定义日期显示样式,比如改成
"yyyyMMddHHmmss"这种无分隔符的格式也完全没问题。检查目标对象的类型
另外别忘了确认你把这个表达式赋值的目标是什么——如果是变量,要确保变量类型是String;如果是数据流里的列,要保证目标列的类型是DT_STR或者兼容的字符串类型。要是目标是日期类型的字段,那转成字符串当然会报错啦!
如果按照上面的方法还是有问题,你可以补充下这个表达式具体用在什么场景(比如派生列、变量赋值?),以及目标对象的类型信息,我再帮你细化排查~
内容的提问来源于stack exchange,提问作者rvphx
相关产品推荐
相关产品推荐

