首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS中的COnverting儒略日期

SSRS中的COnverting儒略日期
EN

Stack Overflow用户
提问于 2017-06-27 08:33:16
回答 2查看 537关注 0票数 2

我有个问题。我正在创建一个报告,其中的查询将在iSeries DB2中提取AS400的Julian Date

如何在SSRS中将其转换为Gregorian Date。我试图修改我的SQL查询,但没有成功。因此决定将其转换为SSRS。

假设我得到一个数字116193。如何将其转换为July 11 2016。(例如: 116193+1900000=2016193。2016年零193天)。

我可以写很多if语句,但我想要更简单的语句。

EN

回答 2

Stack Overflow用户

发布于 2017-06-27 13:39:38

给定: 116193 =2016年7月11日

代码语言:javascript
复制
with YourTable as (
    select 116193 as juldate
    )

select
   juldate, adjdate, thedate
from YourTable t
cross apply (select t.Juldate+1899999 adjdate) a1
cross apply (
      select dateadd(day,adjdate % 1000,dateadd(year,(adjdate/1000)-1900,0)) thedate
    ) a2

+---------+---------+---------------------+
| juldate | adjdate |       thedate       |
+---------+---------+---------------------+
|  116193 | 2016192 | 11.07.2016 00:00:00 |
+---------+---------+---------------------+

第一个交叉应用只提供了一个可在第二个应用中使用的别名。如果愿意,也可以不使用这两种方法。

代码语言:javascript
复制
select 
dateadd(day,(t.Juldate+1899999) % 1000,dateadd(year,((t.Juldate+1899999)/1000)-1900,0)) thedate
from YourTable t

顺便说一句:因为一年从1月1日开始,所以日期算法需要1天小于193天,也就是说,如果你把1月1日加上193天,你就会得到7月12日。

票数 0
EN

Stack Overflow用户

发布于 2017-07-01 08:21:01

在SQL中

代码语言:javascript
复制
DECLARE @JulianDate INT = 116193

SELECT DATEADD(DD, CAST(Right(@JulianDate + 1900000, 3) AS INT) - 1, CAST(LEFT(@JulianDate + 1900000, 4) AS DATE))

在SSRS中,

代码语言:javascript
复制
= DateAdd("d",CInt(Right(Fields!Julian.Value + 1900000, 3)) - 1 , CDate("1/1/"& Left(Fields!Julian.Value + 1900000, 4)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44770639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档