将systimestamp转换为dd-mon-yyyy

时间:2013-05-27 13:13:30

标签: oracle

可能有很多重复,但我面临的典型问题是我保存数据使用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

我有一个小问题我不能像你说的那样使用查询,因为我有子查询sql outllook就像这样

   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

5 个答案:

答案 0 :(得分:3)

oracle中的日期/时间戳始终包含时间部分 您可以使用TRUNC功能来设置时间00:00:00

oracle中的日期/时间戳NEVER包含一种格式,它是一个代表日期和时间的数字。
您不能在日期上使用to_date函数,因为它接受字符串而不是日期。如果你这样做,那么oracle将根据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)

答案 1 :(得分:1)

你试试看:

select to_char(DATE_COLUMN,'dd-mon-yyyy') from SOMETABLE

请检查它是否有效。我没有一个oracle DB可以玩:)

答案 2 :(得分:1)

使用:

  SELECT TO_CHAR(DATE_COLUMN,'dd-mon-yyyy') FROM SOMETABLE;

这将输出为25-MAR-2013.

答案 3 :(得分:0)

这个怎么样?

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

Demo

答案 4 :(得分:0)

  SELECT TO_CHAR(DATE_COLUMN,'dd-mon-yyyy') FROM SOMETABLE;