Unix时间戳定义

Unix时间戳(Unix timestamp),定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。

PQ没有直接转换时间戳的函数,但可通过自定义函数实现。

时间转时间戳

当前日期时间转10位时间戳

  1. timestamp = Text.From(Number.Round(Duration.TotalSeconds(DateTime.LocalNow()-#datetime(1970,1,1,8,0,0)),0)),

当前日期时间转13位时间戳

  1. timestamp = Text.From(Number.Round(Duration.TotalSeconds(DateTime.LocalNow()-#datetime(1970,1,1,8,0,0))*1000,0)),
  2. let
  3. date_time = DateTime.FromText("2021-06-07T02:14:17.951Z"),
  4. timestamp=Text.From(Number.Round(Duration.TotalSeconds(date_time-#datetime(1970,1,1,8,0,0))*1000,0))
  5. in
  6. timestamp
  7. (date_time as text) =>
  8. try
  9. let
  10. date_time = DateTime.FromText(x),
  11. timestamp=Text.From(Number.Round(Duration.TotalSeconds(date_time-#datetime(1970,1,1,8,0,0))*1000,0))
  12. in
  13. timestamp
  14. otherwise null

时间戳转时间

10位时间戳转日期时间

  1. (x)=>
  2. let
  3. time = #datetime(1970,1,1,8,0,0)+#duration(0,0,0,x)
  4. in
  5. time
  6. let
  7. timestamp = (x)=>#datetime(1970,1,1,8,0,0)+#duration(0,0,0,x),
  8. time = timestamp(1502374503)
  9. in
  10. time