You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory中如何提取Timestamp时间部分写入SQL专用池Time列?

解决ADF中从Timestamp提取时间写入Azure SQL专用池Time列的问题

问题分析

直接用substring提取时间部分后写入Time列出现空值,核心原因是:

  • 源端Timestamp(ADF中对应datetime类型)未先转换为固定格式的字符串就截取,不同数据源返回的datetime字符串格式可能不一致,导致截取结果不符合Azure SQL Time类型的格式要求(需为HH:mm:ss[.nnnnnnn]格式)
  • 未显式将截取后的字符串转换为ADF的time类型,直接写入时类型不匹配

解决方案

方法1:使用formatDateTime函数格式化后提取时间(推荐)

ADF虽无直接提取时间的函数,但可通过formatDateTime将datetime类型转换为符合要求的时间字符串,再转成time类型:
在表达式构建器中使用以下表达式:

toTime(formatDateTime(源Timestamp字段, 'HH:mm:ss.fffffff'))
  • formatDateTime将datetime格式化为匹配Azure SQL Time列精度的时间字符串(7位毫秒精度)
  • toTime将字符串转换为ADF的time类型,确保和目标列类型完全匹配

方法2:修正substring的截取逻辑(需确认源datetime字符串格式)

若确认源端datetime的字符串格式固定为yyyy-MM-dd HH:mm:ss.fffffff这类格式,可调整截取逻辑并转换类型:

toTime(substring(toString(源Timestamp字段), 11, 16))
  • 先通过toString将datetime转为字符串,从第11位开始截取16位(覆盖时分秒及毫秒部分),最后用toTime转换类型

验证步骤

  1. 在ADF数据预览中查看转换后的字段值,确认格式为HH:mm:ss[.nnnnnnn]
  2. 检查字段映射:确保转换后的字段和目标Time列的映射关系正确,无类型不匹配提示
  3. 运行调试管道,查看目标Azure SQL专用池中的数据是否正常写入

内容的提问来源于stack exchange,提问作者Vivek KB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:06:19