2013-12-23 25 views
0

我想在oracle中避免TIMESTAMP的年份和第二部分。例如。我有一個領域來輸入抵達時間,我有另一個領域輸入抵達日期。我只想在下午6點35分進入到達時間,而不是整個'2013-12-13 6:35'在我的表格中。我怎樣才能做到這一點?如何避免oracle中的TIMESTAMP的年份和第二部分?

 **Sample of my input** 

    Arrival Date Arrival Time 

    2013-12-23 6:35 PM 

任何人都可以幫助我嗎?

+0

TO_CHAR()你需要應該是你的答案(TO_CHAR(arrival_date,「MM-DD」))的任何格式。但是,如果你讓問題更清楚,那會更好。 –

+0

技術術語是「格式日期」。 –

+0

輸入抵達時間時,我想直接輸入下午6:35。你可以幫我嗎? – user3127109

回答

1
select to_char(systimestamp,'YYYY-MM-DD') from dual; 
select to_char(systimestamp,'hh:mi:ss') from dual; 
1
select to_char(arrival_date,'YYYY-MM-DD'), 
     to_char(arrival_time,'HH:MI AM') 
from dual; 

替換sysdate與所需的日期欄!

上插入

set arrival_date_str as String '2013-12-22' and arrival_time_str as '06:35 PM' 

insert into my_table 
(arrival_date,arrival_time) 
values 
(
    to_date(:arrival_date_str,'YYYY-MM-DD'), 
    to_date(:arrival_date_str||' '||:arrival_time_str,'YYYY-MM-DD HH:MI AM') 
); 

表裏面可能有數據爲「插入日期」和時間「下午6時35分○○秒」保存 顯然會出錯,所以obviusoly你可以使用上面的。

實際上,您應該使用一列arrival_date作爲日期和時間。你可以考慮一下嗎?

+0

輸入抵達時間時,我想直接輸入6:35 PM,而不是TIMESTAMP的全部部分。你可以幫我嗎? – user3127109

+0

編輯!請現在檢查 –

+0

你的答案看起來很混亂!!我想存儲超過20條記錄。我不能繼續爲每一個使用set! – user3127109

0

如果您不需要額外的精度(如毫秒),我建議使用DATE數據類型。更好的選擇是將日期和時間部分存儲在一個數據庫列中。要檢索並在UI顯示你有(分別爲日期和時間部分)使用方法:

to_char(your_time_column,'YYYY-MM-DD') 
to_char(your_date_column,'HH:MI') 

要在UI值存儲進入數據庫,你必須做反向操作:

to_date(UI_date_part || ' ' || UI_time_part, 'YYYY-MM-DD HH:MI') 

如果單獨的數據庫列是強制性的,然後在插入就可以使用上面的轉換函數:

insert into my_table(date_part_column, time_part_column) 
values(to_timestamp('your_date_here', 'YYYY-MM-DD'), 
     to_timestamp('your_time_here', 'HH:MI')); 
+0

要有單獨的欄目輸入到達日期和時間是必須的。我只想輸入時間(例如,下午6點35分到達時間不是TIMESTAMP的'2013-12-12 6:35',你能幫助我嗎? – user3127109

+0

@ user3127109你使用什麼類型的UI?你輸入了嗎? –

+0

我是oracle新手,我使用SQLPLUS提示符來執行所有queris操作,所以很難進入TIMESTAMP的整個部分,所以我想在插入數據時避免TIMESTAMP年和毫秒。 – user3127109

相關問題