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

Azure Data Factory中如何正确使用Unix时间戳构建请求URL?

解决Azure Data Factory中动态生成秒级Unix时间戳的问题

你遇到的核心问题是Azure Data Factory的formatDateTime函数并不支持%s格式符来生成Unix时间戳,同时第一种日期字符串格式也不符合API对时间参数的要求(API需要数字型的秒级时间戳)。下面给你具体的解决方案:

为什么原有方法失效?

  • 第一种动态格式:@{formatDateTime(adddays(utcnow(), -6), '%a %b %d %H:%M:%S +0000 %Y')}生成的是带时区的日期字符串(比如Mon May 07 12:30:00 +0000 2024),但你的API明确需要Unix时间戳(数字形式,如1525756206),所以API无法识别这个字符串,导致筛选条件被忽略。
  • 第二种格式:%s是很多编程语言中strftime函数的格式符,用来返回Unix时间戳,但ADF的formatDateTime并不支持这个格式,所以这个表达式不会返回正确的数字,反而可能输出无效字符串,导致URL请求失败。

正确生成秒级Unix时间戳的方法

Unix时间戳的定义是从1970-01-01T00:00:00Z(UTC纪元时间)到目标时间的总秒数。我们可以用ADF的ticks函数来计算这个差值:

表达式示例

@{div(sub(ticks(adddays(utcnow(), -6)), ticks('1970-01-01T00:00:00Z')), 10000000)}

表达式解释

  1. ticks(时间):返回从0001-01-01 00:00:00到指定时间的100纳秒数(1秒 = 10^7个100纳秒)。
  2. sub(目标时间ticks, 纪元时间ticks):计算目标时间与纪元时间的时间差(单位:100纳秒)。
  3. div(差值, 10000000):将时间差转换为秒数,得到标准的Unix时间戳。

替换到URL中的正确格式

把这个表达式替换到你的URL里,最终的请求URL应该是:

responses/desc/50000/1/@{div(sub(ticks(adddays(utcnow(), -6)), ticks('1970-01-01T00:00:00Z')), 10000000)}/json?X-apikey=542c0603951a208c4be688002d3c40116174

验证建议

你可以先在ADF的表达式生成器中测试这个表达式,确认它返回的是数字格式的秒级时间戳(和你使用的固定值1525756206格式一致),再放到URL中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:30:58