ADF复制活动中CSV时间字段写入Azure SQL datetime自动添当前日期的问题
解答
这确实是ADF复制活动的默认行为
当ADF解析仅含时间的字符串(比如07:45:00)并转换为datetime类型时,其内置逻辑会自动拼接当前系统日期生成完整的datetime值——这和SQL Server原生插入时默认用1900-01-01作为日期的行为完全不同。
无需额外转换步骤的解决办法
你可以直接在复制活动的列映射里通过简单表达式实现需求,不用新增数据流或其他转换环节:
- 打开复制活动的「映射」标签页;
- 找到目标SQL datetime字段对应的映射项,将原来的直接字段映射替换为以下表达式(把
source_time_column替换为CSV里的时间字段名):toDateTime(concat('1900-01-01 ', source_time_column))
这个表达式会把固定日期1900-01-01和源时间字符串拼接后转换为datetime类型,插入SQL时就会自动带上1900-01-01的日期部分,完全符合你的要求,且仅做了字符串到datetime的必要转换。
补充说明
目前没有配置项可以直接修改ADF默认的日期填充规则,所以上述拼接表达式是最直接且贴合你需求的方案。
内容的提问来源于stack exchange,提问作者Henri
相关产品推荐
相关产品推荐

