繁体   English   中英

如何处理 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())

取样日期:

朱利安日期 记录日期
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM