如何处理 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”。
我有一个朱利安日期列表,我需要按顺序保存。 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”。