我已将变量设置为字符串数据类型的“当前日期”,并给出以下默认值
在复制数据操作中,我编写了以下后续查询
@concat('
SELECT
*
FROM
[',variables('schema'),'].[',if(variables('custom_table_list_flag'),item(),item().name),']
WHERE
UPDATE_DATE > DATEADD(DAY,-1,CAST(''[',variables('currentdate'),']'' AS DATE))
AND UPDATE_DATE <= CAST(''[',variables('currentdate'),']'' AS DATE);')
但是 ADF 返回以下错误
“源”端发生故障。 ErrorCode=UserErrorFailedFileOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=文件操作失败,上传文件失败,路径为:'/Parent/UAT'。,Source=mscorlib,''Type=System.Data .SqlClient.SqlException,消息 = 从字符串转换日期和/或时间时转换失败。,源 = .Net SqlClient 数据提供程序,SqlErrorNumber = 241,Class = 16,ErrorCode = -2146232060,State = 1,Errors = [{ Class=16,Number=241,State=1,Message=从字符串转换日期和/或时间时转换失败。,},],'
当尝试将字符串转换为日期或时间值,但该字符串不代表有效的日期或时间时,就会出现上述错误。您可以使用以下表达式:
DATEADD(DAY, -1, CAST(''', variables('currentdate'), ''' AS DATE))'
输出:
CAST(''', variables('currentdate'),''' AS DATE
输出:
代替下面的表达:
DATEADD(DAY,-1,CAST(''[',variables('currentdate'),']'' AS DATE)
CAST(''[',variables('currentdate'),']'' AS DATE);')
currentdate
变量的值为@formatDateTime(utcnow())
。您将能够成功运行查询,不会出现任何错误。