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

在Azure Data Factory中如何合并日期与时间列?

解决ADF中日期列与特殊时间列合并问题

针对你遇到的问题,核心是处理TimeColumn的特殊格式(基于1899-12-31的时间字符串),下面提供两种可行的ADF表达式方案:

方案一:直接拼接日期与时间字符串

这种方法更直观,提取TimeColumn中的时间部分后和DateColumn拼接,再转换为完整的日期时间类型:

parseDateTime(concat(string(DateColumn), ' ', substring(TimeColumn, 11, 8)))
  • 步骤说明:
    1. string(DateColumn):将日期类型的DateColumn转为字符串(如2022-01-01)
    2. substring(TimeColumn, 11, 8):从TimeColumn中截取第11位开始的8个字符,提取出时间部分(如05:59:59)
    3. concat(...):拼接日期和时间字符串(如2022-01-01 05:59:59)
    4. parseDateTime(...):将拼接后的字符串转换为ADF的日期时间类型

方案二:沿用数值相加逻辑(适配ADF函数)

如果你想保留旧场景中"转数值相加"的思路,可以通过计算时间差实现:

fromDays(toNumber(DateColumn) + (toNumber(parseDateTime(TimeColumn)) - toNumber(parseDateTime('1899-12-31T00:00:00.000Z')))/86400000)
  • 步骤说明:
    1. parseDateTime(TimeColumn):将时间字符串转为ADF日期时间类型
    2. 计算与1899-12-31T00:00:00.000Z的毫秒差,除以86400000(一天的毫秒数)得到时间对应的小数天数(如0.2499884259)
    3. toNumber(DateColumn):将日期类型转为Excel风格的数值天数(如2022-01-01对应44562)
    4. 相加后用fromDays()转换为完整的日期时间类型

注意事项

  • 确保DateColumn是ADF识别的日期类型,TimeColumn格式固定为1899-12-31Txx:xx:xx.000Z,否则会返回空值
  • 如果存在异常数据,可搭配coalesce()函数设置默认值,例如:
    coalesce(parseDateTime(concat(string(DateColumn), ' ', substring(TimeColumn, 11, 8))), currentTimestamp())
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:25:18