2015-11-05 167 views
0

我已經搜索到了廣泛的,但我似乎無法找到一種方法將朱利安轉換爲yyyy-mm-ddSQL Server:將Julian日期轉換爲YYYY-MM-DD

這裏是我的朱利安的格式:

Julian格式包括在今年的前兩個數字,並在今年內的日子,最後三個數字。例如,95076March 17, 199595表示年份,而 076表示這是今年的第76天。

15260 

我都試過,但它不工作:

dateadd(d,(convert(int,LAST_CHANGED_DATE) % 1000)-1, convert(date,(convert(varchar,convert(int,LAST_CHANGED_DATE) /1000 + 1900) + '/1/1'))) as GrgDate 
+1

可能重複[在SQL中將7位Julian日期轉換爲DateTime?](http://stackoverflow.com/questions/16279457/convert-7-digit-julian-date-to-datetime-in-sql) –

+0

不,那個jd與我試圖轉換的不同。我試過這個,它不起作用 –

+0

向'datetime'列添加一個值導致溢出。 –

回答

3

可以使用datepart()

SELECT DATEPART(yy, 95076), DATEPART(dy, 95076) 

+++編輯選擇日期的各個部分:我誤解的東西。這是我的修正:+++++

SELECT DATEADD(day, CAST(RIGHT('95076',3) AS int) – 1, CONVERT(datetime,LEFT('95076',2) + '0101', 112)) 
+0

輝煌 - 這工作也! –

1

編輯:離開這個答案對於Oracle和MySQL用戶
這不會在T-SQL工作。

使用此:

MAKEDATE(1900 + d/1000, d % 1000) 

例如:

SELECT MAKEDATE(1900 + 95076/1000, 95076 % 1000) 

這將返回March, 17 1995 00:00:00

SQLFiddle

+1

MAKEDATE()僅適用於Oracle和MySql。這不是標準的一部分。 –

+0

@JoelCoehoorn你是對的。如果MySQL或Oracle用戶出現,我會在這裏留下。 –

0

我串接20我JD然後跑到 DATEADD(YEAR, LAST_CHANGE_DATE/1000 - 1900, LAST_CHANGE_DATE % 1000 - 1)

這引起了我的結果。謝謝!!!

相關問題