1

我在字段中使用时间戳来存储日期和时间,但是当我从表中获取行时,我在时间戳字段中得到了零负载。

SQL> select * from booking_session;

     BK_ID|BK_DATE
----------|-------------------------
         1|18-MAR-12 10.00.00.000000
         2|18-MAR-12 10.25.00.000000
         3|18-MAR-12 10.30.00.000000
         4|18-MAR-12 10.35.00.000000
         5|18-MAR-12 10.40.00.000000

下面是插入语句

插入 BOOKING_SESSION 值 (1,TO_TIMESTAMP('18/03/2012 10:00', 'DD/MM/YYYY HH24:MI')

有人可以告诉我如何存储 bk_date 格式,18-MAR-12 10.00或者至少在它旁边有 AM 或 PM。

提前致谢。

4

2 回答 2

4

您可以将BK_DATEcolumn 声明为timestamp(precision)精度是小数位数以存储秒的小数部分。所以你可能已经声明了BK_DATE timestamp(0). 如果您不需要将时间跟踪到几分之一秒,请使用date数据类型来存储日期。在任何情况下,时间部分 (hh:mi:ss) 都会在那里,如果您像以前那样插入数据,只指定小时和分钟,那么秒数将用零填充。您可以使用to_char函数和适当的日期格式掩码在显示时摆脱那些尾随零:

-- sample of data
SQL> with t1(BK_ID, BK_DATE) as(
  2    select 1, to_timestamp('18-MAR-12 10.00.00.000000', 'DD-MON-RR HH:MI:SSxFF6') from dual union all
  3    select 2, to_timestamp('18-MAR-12 10.25.00.000000', 'DD-MON-RR HH:MI:SSxFF6') from dual union all
  4    select 3, to_timestamp('18-MAR-12 10.30.00.000000', 'DD-MON-RR HH:MI:SSxFF6') from dual union all
  5    select 4, to_timestamp('18-MAR-12 10.35.00.000000', 'DD-MON-RR HH:MI:SSxFF6') from dual union all
  6    select 5, to_timestamp('18-MAR-12 10.40.00.000000', 'DD-MON-RR HH:MI:SSxFF6') from dual
  7  )
  8  select bk_id
  9       , to_char(bk_date, 'DD-MON-RR HH:MI') bk_date
 10    from t1
 11  ;


     BK_ID BK_DATE
---------- ------------------------
         1 18-MAR-12 10:00
         2 18-MAR-12 10:25
         3 18-MAR-12 10:30
         4 18-MAR-12 10:35
         5 18-MAR-12 10:40
于 2012-11-12T03:50:33.007 回答
1

尝试以下查询:

select * from booking_session where trunc(bk_date) = to_date('18-03-2012', 'dd-mm-yyyy');
于 2013-04-15T17:20:04.903 回答