Oracle中的时间类型格式2008-7-22怎么转换成 25-Aug 格式的,谢谢!
解决方案 »
- ORACLE分析函数解决查找最近记录问题. 难!!!
- 多表查询
- select 中的 for update 的问题,在线等待急急急急!!!!
- 再次请教chliang315()~~~(急):sql 查询多条数据时字段id的值是不为一的,但是我要取出id是唯一的多条数据,谢谢
- 为什么oracle不显示出来,高手看看
- DBMS_OUTPUT.Put_Line每行只能打印字符数有限制吗?
- 急,特急的问题!!
- Oracle的安装问题
- 求大神写一个Oracle数据库备份策略!!!!
- 新手问题,一个关于db link的连接问题
- 如何能查出表中不存在的数据
- 看ORALCE中这棵树怎么显示,刚学ORACLE,急啊。。谢谢
将日期型转换成字符串时,可以按新的格式显示。
如格式YYYY-MM-DD HH24:MI:SS表示“年-月-日 小时:分钟:秒”。Oracle的日期类型是包含时间在内的。
主要的日期格式字符的含义如表2-9所示。
表2-9 日期转换格式字符代 码 代表的格式 例 子
AM、PM 上午、下午 08 AM
D 数字表示的星期(1~7) 1,2,3,4,5,6,7
DD 数字表示月中的日期(1~31) 1,2,3,…,31
MM 两位数的月份 01,02,…,12
Y、YY、YYY、YYYY 年份的后几位 3,03,003,2003
RR 解决Y2K问题的年度转换
DY 简写的星期名 MON,TUE,FRI,…
DAY 全拼的星期名 MONDAY,TUESDAY,…
MON 简写的月份名 JAN,FEB,MAR,…
MONTH 全拼的月份名 JANUARY,FEBRUARY,…
HH、HH12 12小时制的小时(1~12) 1,2,3,…,12
HH24 24小时制的小时(0~23) 0,1,2,…,23
MI 分(0~59) 0,1,2,…,59
SS 秒(0~59) 0,1,2,…,59
,./-;: 原样显示的标点符号
'TEXT' 引号中的文本原样显示 TEXT
【训练3】 将日期转换成带时间和星期的字符串并显示。
执行以下查询:
SELECT TO_CHAR(sysdate,'YYYY-MM-DD HH24:MI:SS AM DY') FROM dual;
结果为:
TO_CHAR(SYSDATE,'YYYY-MM-DD HH24
----------------------------------------------------------
2004-02-07 15:44:48 下午 星期六
说明:该语句中的第一个参数表示要转换的日期,第二个参数是格式字符串,表示转换后的格式,结果类型为字符串。“YYYY”为4位的年份,“MM”为两位的月份,“DD”为两位的日期,“HH24”表示显示24小时制的小时,“MI”表示显示分钟,“SS”表示显示秒,“AM”表示显示上午或下午(本例中为下午),“DY”表示显示星期。“-”、“:”和空格原样显示,用于分割日期和时间。转换出来的系统时间为:2004年2月7日(星期六)下午15点44分48秒。
还可以按其他的格式显示。以下查询中插入中文的年月日,其中原样显示部分区别于外层的单引号,需要用双引号引起。
【训练4】 将日期显示转换成中文的年月日。
输入并执行查询:
SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual;
执行结果为:
TO_CHAR(SYSDAT
-------------------------
2003年11月18日
说明:双引号中的中文字“年”、“月”、“日”原样显示,单引号为字符串的界定标记,区别于双引号,不能混淆。
【训练5】 将雇佣日期转换成字符串并按新格式显示。
输入并执行查询:
SELECT ename, to_char(hiredate, 'DD Month YYYY') HIREDATE
FROM emp;
执行结果为:
ENAME HIREDATE
------------ -----------------------
SMITH 17 12月 1980
ALLEN 20 2月 1981
说明:Month表示月份的特殊格式,如“12月”。年度用4位显示。
对于数字型的日期格式,可以用数字或全拼格式显示,即在格式字符后面添加TH或SP。TH代表序列,SP代表全拼。
【训练6】 以全拼和序列显示时间。
执行以下查询:
SELECT SYSDATE,to_char(SYSDATE,'yyyysp'),to_char(SYSDATE,'mmspth'),
to_char(SYSDATE,'ddth') FROM dual;
执行结果为:
SYSDATE TO_CHAR(SYSDATE,'YYYYSP') TO_CHAR( TO_C
------------- -------------------------------------------------------------- --------------- --------
07-2月 -04 two thousand four second 07th
说明:“two thousand four”为全拼表示的2004年;“second”为全拼序列表示的2月;“07th”为用序列表示的7号。
在格式字符中,前两个字符代表显示结果的大小写。如果格式中的前两个字符是大写,则输出结果的全拼也为大写。如果格式中的前两个字符是小写,则输出结果的全拼也为小写。如果格式中的前两个字符的第一个字符是大写,第二个字符是小写,则输出结果的全拼也为大写开头,后面为字符小写。
【训练7】 时间显示的大小写。
步骤1:执行以下查询:
SELECT SYSDATE,to_char(SYSDATE,'yyyysp') FROM dual;
结果为:
SYSDATE TO_CHAR(SYSDATE,'YYYYSP')
------------- ----------------------------------------------
07-2月 -04 two thousand four
步骤2:执行以下查询:
SELECT to_char(SYSDATE,'Yyyysp') FROM dual;
结果为:
SYSDATE TO_CHAR(SYSDATE,'YYYYSP')
-------------- -----------------------------------------------
Two Thousand Four
步骤3:执行以下查询:
SELECT SYSDATE,to_char(SYSDATE,'YYyysp') FROM dual;
结果为:
SYSDATE TO_CHAR(SYSDATE,'YYYYSP')
-------------- -----------------------------------------------
TWO THOUSAND FOUR
说明:步骤1输出全拼小写的年度,步骤2输出全拼的以大写开头的年度,步骤3输出全拼大写的年度。
===================================================================================================
综合以上:
SELECT TO_CHAR(TO_DATE('20080722'),'DD MON')
FROM dual
结果:
22 JUL
但是要 正确地设置 nls_language参数。
alter session set nls_language='AMERICAN';
===================================================
不存在格式转换的问题,无论显示的是哪种格式,数据库本身都是以同一种格式保存的。