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

将C# DateTime.Ticks转换为BigQuery DateTime格式的方法

将C# DateTime.Ticks转换为BigQuery DateTime格式的方法

嗨,这问题很常见,我来给你捋清楚怎么解决!

首先得明白C# Ticks的本质:它是从0001-01-01 00:00:00 UTC开始,以100纳秒为单位的累计计数。而BigQuery的时间函数刚好能直接基于这个起点做偏移计算,具体转换方法如下:

核心SQL转换语句

直接用BigQuery的TIMESTAMP_ADD和DATETIME函数组合就能搞定,把你的Ticks列代入即可:

SELECT 
  DATETIME(
    TIMESTAMP_ADD(
      TIMESTAMP '0001-01-01 00:00:00', 
      INTERVAL your_ticks_column * 100 NANOSECOND
    )
  ) AS converted_utc_datetime
FROM your_table_name;

几个要注意的点

  • 为什么乘100? 因为1个C# Tick等于100纳秒,BigQuery的INTERVAL ... NANOSECOND参数需要的是纳秒总数,所以必须做这个转换。
  • 如果你的Ticks列存储的是字符串类型,记得先转成INT64:CAST(your_ticks_column AS INT64),避免计算报错。

实际测试示例

用你给出的示例值638148714773184690来验证:

SELECT 
  DATETIME(
    TIMESTAMP_ADD(
      TIMESTAMP '0001-01-01 00:00:00', 
      INTERVAL 638148714773184690 * 100 NANOSECOND
    )
  ) AS converted_datetime;

执行后会得到对应的UTC时间:2023-10-12 11:11:17.318469,和C#里DateTime.FromTicks(638148714773184690).ToUniversalTime()的结果完全一致。

备注:内容来源于stack exchange,提问作者Keyvan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 12:33:05