可能有很多重复,但我面临的典型问题是我保存数据使用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
答案 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)
答案 4 :(得分:0)
SELECT TO_CHAR(DATE_COLUMN,'dd-mon-yyyy') FROM SOMETABLE;