如何避免ADF管道写入CSV时将日期字段转为日期时间格式?
问题分析与解决方案
为什么ADF会给日期类型加时间戳?
ADF写入CSV时,默认会把日期/时间类型数据转成完整的datetime格式输出——哪怕源数据是date类型(仅含年月日),也会自动补全时间部分为00:00:00.0000000。本质是因为CSV没有原生日期类型,ADF默认用统一的带时间戳格式序列化这类数据。
解决办法
办法1:在Synapse查询里直接格式化日期
修改你的SQL语句,用format函数直接输出指定格式的日期字符串:
select ID, format(created_date, 'dd-MM-yyyy') as createddate from table
然后去ADF的CSV接收器配置里:
- 打开Sink标签,把Quote character设为
None - 确认数据集Schema里
createddate的类型是String
这样输出的CSV里,createddate就是不带引号的03-05-2024。
办法2:通过ADF数据集配置调整格式
如果想保留源数据的date类型,直接在ADF里改配置:
- 打开CSV接收器的数据集,进入Schema标签
- 找到
createddate字段,把类型改成String - 点击字段旁边的Format设置,输入日期格式
dd-MM-yyyy(如果是月-日-年格式就用MM-dd-yyyy) - 切到Connection标签,把Quote character设为
None
这样ADF会自动把date类型转成指定格式的字符串,而且不会加引号。
注意点
- 格式字符串要和你预期的日期格式对应,别写错格式顺序
- 把Quote character设为
None时,要确保日期字段里没有CSV的分隔符(比如逗号),否则会打乱数据结构
内容的提问来源于stack exchange,提问作者Dinesh Kumar Rajendran
相关产品推荐
相关产品推荐

