如何在预言机中避免时间戳中的年份和第二部分



我想避免在oracle中从时间戳中获取年份和第二部分。例如。我有一个字段输入到达时间,我有一个字段输入到达日期。我想只输入下午 6:35,同时输入到达时间,而不是整个表格中的"2013-12-13 6:35"。我该怎么做?

     **Sample of my input**
     Arrival Date  Arrival Time
     2013-12-23    6:35 PM

谁能帮我?

select to_char(systimestamp,'YYYY-MM-DD') from dual;
select to_char(systimestamp,'hh:mi:ss') from dual;
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。你能考虑一下吗?

如果您不需要额外的精度(如毫秒),我建议使用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'));

最新更新