我在SQL Server的表中有一列,该列以朱利安格式(CYYDDD)存储日期。我正在该字段上运行选择SQL,并希望将日期格式转换为DD / MM / YYYY。
尝试了几种SQL进行格式转换,但没有一个给我正确的输出
DATEADD(dd, (@jdate - ((@jdate/1000) * 1000)) - 1, dateadd(yy, @jdate/1000, 0))
DATEADD(year, XHUPMJ / 1000, 0) + DATEADD(day, XHUPMJ % 1000, 0) - 1
想查看格式为DD / MM / YYYY的日期输出,后面没有任何0。
我在列中有一个儒略日期值,为115351
,我希望它可以转换为17/12/2015
答案 0 :(得分:2)
我从此site找到了一个示例代码,将儒略日期转换为DD / MM / YYYY格式
DECLARE @Sample AS VARCHAR(6) = '115351'
SELECT CONVERT(VARCHAR(10), DATEADD(DAY, CONVERT(INT, @Sample) - ((1000*(CONVERT(INT, @Sample)/1000)))-1, DATEADD(YEAR, CONVERT(INT, @Sample/1000), '1 Jan 1900')), 103) AS Result
它将转换为2015年的第351天,因此结果将为17/12/2015
更新:
与cars10m suggested in the comment一样,使用%
模运算符,可以将上述查询简化为
DECLARE @Sample AS VARCHAR(6) = '115351'
SELECT CONVERT(VARCHAR(10), DATEADD(DAY, CONVERT(INT, @Sample) % 1000 -1, DATEADD(YEAR, CONVERT(INT, @Sample/1000), '1 Jan 1900')), 103) AS Result
答案 1 :(得分:0)
您想要这个答案吗?
SELECT DATEADD(day, CAST(RIGHT(Variable,3) AS int) / 1, CONVERT(datetime,LEFT(Variable,2) + '0101', 103))