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_DATE列を次のように宣言できますtimestamp(precision)。ここで、精度は1秒の小数部を格納するための10進数です。だからあなたは宣言したかもしれません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 に答える