-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

我有一个小问题我不能像你说的那样使用查询,因为我有子查询 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
4

5 回答 5

3

oracle 中的日期/时间戳总是包含时间部分。
您可以使用 TRUNC 功能来制作时间00:00:00

oracle 中的日期/时间戳从不包含格式,它是代表日期和时间的数字。
您不能在日期上使用 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)
于 2013-05-27T13:55:38.357 回答
1

你试一试:

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

请检查它是否有效。我没有甲骨文数据库可以玩:)

于 2013-05-27T13:21:40.010 回答
1

利用:

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

这将输出为25-MAR-2013.

于 2013-05-27T13:21:42.573 回答
0
  SELECT TO_CHAR(DATE_COLUMN,'dd-mon-yyyy') FROM SOMETABLE;
于 2013-05-27T16:19:52.723 回答
0

这个怎么样?

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

演示

于 2013-05-27T13:28:48.310 回答