首页 > 解决方案 > 当日期以朱利安格式存储为 int 时,获取最近 5 天的数据

问题描述

我是 sql 新手,需要查询帮助。

数据库是 JDEdwards 在我的数据库中,我有一列“jdt”,其中 Julian 日期存储为整数。现在我必须编写一个查询来从今天提取最近 5 天的数据。我的想法是将当前日期转换为朱利安日期为 int 然后 juliandate-5

例如:Julian date=117209 即 2017-07-28 最近 5 天日期 ie 2017-07-23 -> 117204

我也必须在单个查询中执行此操作,我无法将列添加到现有表中。而且这个查询不需要对每个日期进行概括,即如果我运行这个查询,它应该自动采用那个运行日期。

如果是,我的方法是否正确,请帮助我查询。如果有更好的方法,请就此提出建议

TIA

标签: tsqldate-conversionjulian-datejdedwards

解决方案


“朱利安”日期是自特定日期以来的天数。

JDE 使用压缩日期格式,您必须将其转换为实际日期,因此您无法对 JDE 日期进行整数数学运算:所有版本的 JDE 都使用儒略日期格式,如下所示: CYYDDD 其中 C = Century;YY = 2 位数年份;和 DD = 代表一年中日期的 3 位数字

要将 JDE 日期转换为实际日期:

Declare @jdedate int;
SET @jdedate = 117209

SELECT DATEADD(DAY,(@jdedate%1000)-1, DATEADD(YEAR,(@jdedate/1000),'1900-01-01'))

要将当前日期转换为 JDE 日期:

SELECT (DATEPART(YEAR, GETDATE())-1900) * 1000 + DATEPART(dayofyear,GETDATE())

推荐阅读