繁体   English   中英

在SSRS中转换儒略日期

[英]COnverting Julian date in SSRS

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

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

假设我得到一个号码116193 如何将其转换为July 11 2016 (例如:116193 + 1900000 =2016193。2016年和193日)。

我可以做很多if语句,但我想更轻松些。

给出:116193 = 2016年7月11日

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 |
+---------+---------+---------------------+

第一个交叉应用仅提供可在第二个应用中使用的别名。 如果愿意,也可以不做任何事情。

select 
dateadd(day,(t.Juldate+1899999) % 1000,dateadd(year,((t.Juldate+1899999)/1000)-1900,0)) thedate
from YourTable t

顺便说一句:因为一年是从1月1日开始的,所以日期算术需要少于193天的1天,即,如果您在1月1日加上193天,则将得到7月12日。

在SQL

DECLARE @JulianDate INT = 116193

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

在SSRS中,

= DateAdd("d",CInt(Right(Fields!Julian.Value + 1900000, 3)) - 1 , CDate("1/1/"& Left(Fields!Julian.Value + 1900000, 4)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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