我有个问题。我正在创建一个报告,其中的查询将在iSeries DB2中提取AS400的Julian Date。
如何在SSRS中将其转换为Gregorian Date。我试图修改我的SQL查询,但没有成功。因此决定将其转换为SSRS。
假设我得到一个数字116193。如何将其转换为July 11 2016。(例如: 116193+1900000=2016193。2016年零193天)。
我可以写很多if语句,但我想要更简单的语句。
发布于 2017-06-27 13:39:38
给定: 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日开始,所以日期算法需要1天小于193天,也就是说,如果你把1月1日加上193天,你就会得到7月12日。
发布于 2017-07-01 08:21:01
在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)))https://stackoverflow.com/questions/44770639
复制相似问题