如何处理 SQL 中的 Julian Date 翻转?

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())

采样日期:

JulianDate RecordDate
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

期望的输出:

JulianDate
362
363
364
365
001
002
003

因此,如果您想象我们从第 362 天开始,我们的@LowestJulianDate 是 362,我们的记录日期范围是今天和接下来的 6 天,完成了儒略日期列表。

如何让日期按顺序进行并在滚动中解决?

为什么不按年份列和儒略日期列排序?

select JulianDate, RecordDate 
from table 
order by yearcolumn,JulianDate

您不能只使用实际上是 DayOfYear 值的“JulianDate”。您还需要单独存储它引用的年份,或者将其作为“JulianDate”值的一部分存储。例如,您需要“2021362”而不是“362”。