我正在创建一个包含2列的表:
Task.Run()
星期日到1978-01-01 00:00:00
星期六的时间,粒度:分钟)我填充了第一列。我想填写第二列。
我现在是怎么做的:
1978-01-07 23:59:00.0
我基本上想要一个功能,我通过任何日期,它告诉我在一周内我在哪里。 所以,我需要一个函数,就像上面的函数一样。更优化,我给出一个日期并获得一个唯一的ID。唯一ID应每周重复一次。
示例:
EXTRACT(dayofweek FROM day_time) * 10000 + DATEDIFF('minutes', TRUNC(day_time), day_time)
的ID与Jan 1, 2015 00:00:00
相同。
Jan 8, 2015 00:00:00
答案 0 :(得分:0)
您可以一次完成所有操作,而无需分别提取日期:
sqrt(x^2+y^2+z^2+w^2)
,我希望它会快一点。
我希望另一种更快的方法是将时间戳转换为时代,除以60以得到时代的分钟数,然后取值为10,080的模数(一周内60 * 24 * 7分钟)
SELECT DATEDIFF('minutes', date_trunc('week',day_time), day_time)
如果您不在乎每周索引的大小,也可以这样做:
SELECT (extract(epoch from day_time) / 60) % 10080
并完全跳过除法步骤,这将使其变得更快。