Sql server 转换数据类型
我试图将串联字符串分配给我的变量,并得到错误“将数据类型varchar转换为datetime时出错” 你能帮我解决这个问题吗Sql server 转换数据类型,sql-server,tsql,Sql Server,Tsql,我试图将串联字符串分配给我的变量,并得到错误“将数据类型varchar转换为datetime时出错” 你能帮我解决这个问题吗 declare @msg Varchar(max) set @msg = 'select' + 'File Date: ' + CAST(GetDate() AS VARCHAR(Max)) + ' data imported successfully' EXEC DataImport @PackageName = '', @Status= 'Successful'
declare @msg Varchar(max)
set @msg = 'select' + 'File Date: ' + CAST(GetDate() AS VARCHAR(Max)) + ' data imported successfully'
EXEC DataImport
@PackageName = '',
@Status= 'Successful',
@Message = @msg,
@FileName = 'test',
@PackageExecutionDate = 'test',
@Step = 'Import Flat Files'
您可以使用CONCAT()
,它会自动转换值:
set @msg = concat('select', 'File Date: ', CAST(GetDate() AS VARCHAR(Max)), ' data imported successfully')
您的原始数据库标记都不支持
getdate()
或varchar(max)
,因此您可能还存在其他问题。我使用C代码解决了这个问题,而不是使用SQL直接在SSIS包上进行转换。谢谢。我删除了不兼容的数据库标记。您的代码在SQLite或MySQL中都没有意义。日期字符串不可能超过4GB,因此没有理由使用varchar(max)
。如果你想控制日期字符串,你应该使用CONVERT
和样式,或者FORMAT
和格式字符串。您好@GordonLinoff,我试过CONCAT(),但它也不起作用。