[英]How can I handle a Julian Date rollover in SQL?
我有一个朱利安日期列表,我需要按顺序保存。 362、363、364、365、001、002、003。我的查询从获取处理的最后一个儒略日期和之后的每个日期开始。 现在,它会将我的最低日期限制在 365,而我无法获得跟随它的记录。 同一组数据还有一个附加年份的日期字段,但它似乎没有帮助,因为在更正翻转之前不会收集这些记录。 这是我的简化查询:
select JulianDate, RecordDate
from table
where JulianField > @LowestJulianDate
and RecordDate between GetDate() and DateAdd(day, 6, GetDate())
取样日期:
朱利安日期 | 记录日期 |
---|---|
362 | 2020-12-28 |
363 | 2020-12-29 |
364 | 2020-12-30 |
365 | 2020-12-31 |
001 | 2021-01-01 |
002 | 2021-01-02 |
003 | 2021-01-03 |
所需的 output:
朱利安日期 |
---|
362 |
363 |
364 |
365 |
001 |
002 |
003 |
因此,如果您想象我们从第 362 天开始,我们的@LowestJulianDate 是 362,我们的记录日期范围是今天和接下来的 6 天,完成儒略日期列表。
如何按顺序获取到 go 的日期并在翻转中解决?
那么为什么不按年份列和儒略日期列排序呢?
select JulianDate, RecordDate
from table
order by yearcolumn,JulianDate
您不能只使用实际上是 DayOfYear 值的“JulianDate”。 您还需要单独存储它引用的年份或作为“JulianDate”值的一部分。 例如,您需要“2021362”而不是“362”。
在没有年份的情况下,我们正在做的是在 7 天滚动 window 的年份滚动中对列表进行排序是查看儒略日的左侧 1。 如果它小于 3 roll 则它被翻转。 我们将它们分成 2 个篮子(旧年份和新年),对它们进行排序,然后将它们与列表中“最大”的新年数据重新组合。
我们看左边的 1,因为在我们的应用程序中,我们获取的数据的最后一天可能是 357,例如翻转可能是 003。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.