[英]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.