gpt4 book ai didi

sql - 优化 : How to get TimeId from time for each minute in a week?

转载 作者:行者123 更新时间:2023-11-29 11:51:42 24 4
gpt4 key购买 nike

我正在创建一个包含 2 列的表:

  1. Day_time(时间从 1978-01-01 00:00:00 星期日到 1978-01-07 23:59:00.0 星期六,粒度:分钟)
  2. 要填充的 Time_id(每分钟的唯一 ID)

我填充了第一列。我想填充第二列。

我现在是怎么做的:

EXTRACT(dayofweek FROM day_time) * 10000 + DATEDIFF('分钟', TRUNC(day_time), day_time)

我基本上想要一个函数,我可以在其中传递任何日期,它会告诉我一周内我在哪里。 所以,我需要一个函数,就像上面的函数一样。只是更优化,我在其中提供日期并获得唯一 ID。唯一 ID 应每周重复一次。

Example: ID for Jan 1, 2015 00:00:00 will be same as Jan 8, 2015 00:00:00.

Why 1978-01-01? cuz it starts from a Sunday.    
Why 10,000? cuz the number of minutes in a day are in four digits.

最佳答案

您可以一次性完成所有操作,无需单独提取日期:

SELECT DATEDIFF('minutes', date_trunc('week',day_time), day_time) 我希望它稍微快一些。

另一种我希望速度更快的方法是将时间戳转换为纪元,除以 60 以从纪元得到分钟数,然后取值模数 10,080(一周 60 * 24 * 7 分钟) .

SELECT (extract(epoch from day_time)/60) % 10080

如果你不关心每周索引的大小,你也可以这样做:

SELECT (extract(epoch from day_time)) % 604800 并完全跳过除法步骤,这应该会使其更快。

关于sql - 优化 : How to get TimeId from time for each minute in a week?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34943937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com