如何在oracle中避免使用TIMESTAMP的年份和第二部分?

时间:2013-12-23 12:51:41

标签: sql oracle timestamp

我想在oracle中避免使用TIMESTAMP的年份和第二部分。例如。我有一个字段输入到达时间,我有另一个字段输入到达日期。我想在下午6:35进入,而不是整个'2013-12-13 6:35'到达我的桌子。我怎么能这样做?

     **Sample of my input**

     Arrival Date  Arrival Time

     2013-12-23    6:35 PM

有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

select to_char(systimestamp,'YYYY-MM-DD') from dual;
select to_char(systimestamp,'hh:mi:ss') from dual;

答案 1 :(得分: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')
);

在表格中,可以将数据保存为"插入日期"时间为" 06:35:00 PM" 显然它可能会出错,所以很明显你可以使用上面的内容。

实际上,对于日期和时间,您应该使用一列arrival_date。你能考虑一下吗?

答案 2 :(得分: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'));