说我有以下行
DATE
2016-04
2015-11
2009-08
我希望它们看起来像这样,日期总是设置为月份的第一天
DATE
01-APR-2016
01-NOV-2015
01-AUG-2009
答案 0 :(得分:3)
您需要先转换您的"月份日期"使用to_date()
to_date(the_column||'-01', 'yyyy-mm-dd')
请注意,您需要添加一天(||'-01'
)才能获得to_date()
功能的有效输入。
然后您可以根据需要使用to_char()
select to_char(to_date(the_column||'-01', 'yyyy-mm-dd'), 'dd-mon-yyyy')
from the_table;
答案 1 :(得分:2)
回答您的直接问题:
drop table junk;
create table junk ( notadate varchar2(7) );
insert into junk values ( '2016-04' );
insert into junk values ( '2015-11' );
insert into junk values ( '2009-08' );
commit;
alter session set nls_date_format='dd-mon-yyyy';
select to_date(notadate,'yyyy-mm') from junk;
TO_DATE(NOT
-----------
01-apr-2016
01-nov-2015
01-aug-2009
但是,我可能建议您执行以下操作:
alter table junk add ( mydate date );
update junk
set mydate = to_date(notadate,'yyyy-mm')
/
alter table junk drop ( notadate );
并使用新的DATE列..正确...
select * from junk;
MYDATE
-----------
01-apr-2016
01-nov-2015
01-aug-2009
select to_char(mydate, 'yyyy-mm') from junk;
(if needed)
TO_CHAR
-------
2016-04
2015-11
2009-08
答案 2 :(得分:1)
首先,除了文本的月份和年份之外还附加日期。
然后使用to_date()
然后使用日期格式:
ALTER SESSION SET nls_date_format='dd-mm-yyyy'
;
答案 3 :(得分:1)
使用to_char
功能
SELECT to_char("DATE", 'DD-FMMon-YYYY') AS "DATE"
FROM yourtable;
输出
DATE
01-Apr-2016
01-Nov-2015
01-Aug-2009