tsql - 当日期以朱利安格式存储为 int 时,获取最近 5 天的数据
问题描述
我是 sql 新手,需要查询帮助。
数据库是 JDEdwards 在我的数据库中,我有一列“jdt”,其中 Julian 日期存储为整数。现在我必须编写一个查询来从今天提取最近 5 天的数据。我的想法是将当前日期转换为朱利安日期为 int 然后 juliandate-5
例如:Julian date=117209 即 2017-07-28 最近 5 天日期 ie 2017-07-23 -> 117204
我也必须在单个查询中执行此操作,我无法将列添加到现有表中。而且这个查询不需要对每个日期进行概括,即如果我运行这个查询,它应该自动采用那个运行日期。
如果是,我的方法是否正确,请帮助我查询。如果有更好的方法,请就此提出建议
TIA
解决方案
“朱利安”日期是自特定日期以来的天数。
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())
推荐阅读
- javascript - 检测英语或法语中找不到的所有口音
- amazon-web-services - 在 AWS Lambda 上使用 golang 解组错误,在本地工作
- css - 如何将 2 个不同的样式表应用于一个 React 组件?
- ios - Siri快捷方式:如何要求解锁手机
- ansible - ansible delegate_to 变量未定义
- javascript - 动作调度不更新 Redux/React 中的状态
- grammar - 如何将这种歧义语法转换为非歧义语法?
- java - 如何过滤具有布尔变量定义的 3 种过滤器类型的 ArrayList?
- url - 如何获得一个简短的有效网址
- ios - MDLVertexDescriptor 和 MTLVertexDescriptor 有什么区别?