-1

これには多くの重複がある可能性がありますが、systimestamp を使用してデータを保存している典型的な問題に直面しています。27-MAY-13 09.00.39.169849000 AM -04:00

このデータを dd-mon-yyyy 形式で取得したいのですが、次のクエリを使用してそれを実行しています

TO_DATE(TRUNC( DATE_COLUMN),'dd-mon-yyyy') from sometable 私は25-MAR-13以下の結果を得ています

しかし、2013 年 3 月 25 日として欲しいのですが、データベースが oracle 11g か 10g かわかりません。

@cade

私はあなたが言ったようにクエリを使用できない小さな問題があります。

   WITH C AS (
select 
  rtrim (xmlagg (xmlelement (e, TRIM(VALUE_TX) || '#')  order by field_id ).extract ('//text()'), ',') somedat, 
  date_colum
FROM (
SELECT form some table)  
   select First_Name as "First Name",Last_Name as "Last Name",EMAIL,Mobile_Phone as "Mobile Phone",Submitted as "Submitted On"

   from (
   SELECT SUBSTR(c.somedat,0,INSTR(c.somedata,'#',1,1)-1) AS First_Name,
    SUBSTR(c.somedata,INSTR(c.somedata,'#',1,1)+1,INSTR(c.somedata,'#',1,2)-INSTR(c.somedata,'#',1,1)-1) AS Last_Name,
    SUBSTR(c.somedata,INSTR(c.somedata,'#',1,2)+1,INSTR(c.somedata,'#',1,3)-INSTR(c.somedata,'#',1,2)-1) AS Mobile_Phone,
    SUBSTR(c.somedata,INSTR(c.somedata,'#',1,3)+1,INSTR(c.somedata,'#',1,4)-INSTR(c.somedata,'#',1,3)-1) AS EMAIL
    to_char(TRUNC( C.date_colum),'dd-mon-yyyy')         AS Submitted

    FROM C)
   order by 5 asc
4

5 に答える 5

3

Oracle の日付/タイムスタンプには、常に時刻の部分が含まれます。
TRUNC 関数を使用して時刻を作成できます00:00:00

オラクルの日付/タイムスタンプには形式が含まれていません。これは日付と時刻を表す数値です。
日付ではなく文字列を受け入れるため、日付に to_date 関数を使用することはできません。そうする場合、オラクルは NLS_DATE_FORMAT に従って暗黙的に日付を varchar2 に変換します。

したがって、日付だけが必要で時刻の部分を無視する場合 (つまり、order by 句で) trunc、日付 / タイムスタンプ列を使用します。
それを表示したい場合(つまり、select句で)、to_char関数を使用します

クエリは次のようになります。

 SELECT to_char(DATE_COLUMN,'dd-MON-yyyy') 
 FROM SOMETABLE
 ORDER BY trunc(DATE_COLUMN)
于 2013-05-27T13:55:38.357 に答える
0

これはどう?

select to_char(DATE_COLUMN,'dd-MON-yyyy') from SOMETABLE ORDER BY DATE_COLUMN DESC;

デモ

于 2013-05-27T13:28:48.310 に答える
0
  SELECT TO_CHAR(DATE_COLUMN,'dd-mon-yyyy') FROM SOMETABLE;
于 2013-05-27T16:19:52.723 に答える