2017-06-30 127 views
0

我有一張表格,它以不同的方式保存日期,三列,一年一年,另一月份和一天多一天。因爲我想使用日期比較,所以我需要它們作爲日期格式的標準單列。 例如:將三列 - 年,月和日轉換爲單一日期Oracle

YEAR | MONTH | DAY 
+-----+-------+-----+ 
2011 | 01 | 01 

想結果是有日期yyyy-mm-dd格式。到目前爲止,我已經搜查,發現了一些解決方案,但我不能讓他們的工作 - First在Oracle中不工作,二是更數學解:

select (2011-1900)*10000 +1*100 +1 (date) from dual; 

給出錯誤:ORA-00936: missing expression

能有什麼我確實達到了預期的結果?可能會有另一種解決方案,而不使用數學?

+0

查找TO_DATE功能 –

+0

什麼是你的3列的數據類型? – trincot

+0

@trincot數據類型是全部數字3 – Hatik

回答

4

你不應該瞄準日期格式,但對於日期類型。格式只是在顯示屏上顯示日期的一種方式,但日期類型在日期計算和比較中最容易使用。如果你的列是數字

select to_date(year || month || day, 'YYYYMMDD') from dual 

因此,假設你的三列是字符串類型,它總是有軟墊零作爲你的榜樣(即1月擔任011),你可以這樣做:

select to_date(to_char(year, 'FM0000') || to_char(month, 'FM00') 
      || to_char(day, 'FM00'), 'YYYYMMDD') from dual 

如果你真的需要直接從三個值計算的文本格式:

select year || '-' || month || '-' || day from dual 

再次,如果你的列是數字:

select to_char(year, 'FM0000') || '-' || to_char(month, 'FM00') 
           || '-' || to_char(day, 'FM00') from dual 
+1

FM000 FM00是什麼意思?列以數據數據格式存儲 – Hatik

+1

「TO_CHAR」中使用的[格式模型文檔](https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm) - 它描述了兩個'0'格式模型和'FM'格式模型修改器。 – MT0

相關問題