Oracle默认时间格式Date格式转换
默认时间格式:
1、Oracle的⽇期格式
Oracle缺省的时间格式即时间数据的显⽰形式,与所使⽤的字符集有关。⼀般显⽰年⽉⽇,⽽不显⽰时分秒。
例如,使⽤us7ascii字符集(或者是其他的英语字符集)时,缺省的时间格式显⽰为:28-Jan-2003,使⽤zhs16gbk字符集(或其他中⽂字符集)的时间格式缺省显⽰为:2003-1⽉-28。
oracle 时间转换向表中插⼊数据时,如果不使⽤转换函数,则时间字段的格式必须遵从会话环境的时间格式,否则不能插⼊。
查看当前会话的时间格式,可以使⽤以下的SQL语句:
SQL> select sysdate from dual;
2、修改Oracle⽇期格式的⽅法
(1)在sql*plus中修改当前会话的⽇期格式
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
将当前会话的时间格式修改为这种格式: 2003-01-28 15:23:38,即四位年-两位⽉-两位⽇,空格,24⼩时的制的⼩时:分钟:秒。
这种修改⽅法,只对当前会话有效。
注意,是对当前会话,⽽不是当前的sql*plus窗⼝。即如果你这样修改之后,⼜使⽤connect命令以其他⽤户连接到数据库或者是连接到其他的数据库,则这个⽇期格式就失效了,⼜恢复到缺省的⽇期格式。
(2)修改注册表(只对windows系统)
在注册表/hkey_local_machine/software/oracle/home0主键中增加⼀个字串(8i版本),字串名为nls_date_format,字串的值为你希望定义的时间格式,如: yyyy-mm-dd hh24:mi:ss ,然后重新启动
sql*plus。
这种修改⽅法,对sql*plus窗⼝有效,即不论你打开多少个sql*plus窗⼝,缺省的都是这种时间格式。修改服务器端的注册表⽆效,只有修改客户端的注册表才有效。
(3)Linux下:oracle⽤户编辑 .bash_profile下加⼊以下内容
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS '
重新登录即可⽣效
(4)⽤sysdba登录
然后更新props$这个表⾥的字段即可
update props$ set value = 'YYYY-MM-DD HH24:MI:SS' where parameter = 'NLS_DATE_FORMAT';
DATE格式转换:
⼀、在使⽤Oracle的to_date函数来做⽇期转换时,很多Java程序员也许会直接的采⽤“yyyy-MM-dd HH:mm:ss”的格式作为格式进⾏转换,但是在Oracle中会引起错误:“ORA 01810 格式代码出现两次”。
如:select to_date( '2005-01-01 13:14:20 ', 'yyyy-MM-dd HH24:mm:ss ') from dual;
原因是:SQL中不区分⼤⼩写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采⽤了mi代替分钟。
select to_date( '2005-01-01 13:14:20 ', 'yyyy-MM-dd HH24:mi:ss ') from dual;
⼆、另要以24⼩时的形式显⽰出来要⽤HH24
假设当前时间为:2013-11-25 18:45:32
select to_char(sysdate, 'yyyy-MM-dd HH24:mi:ss ') from dual;//mi是分钟 2013-11-25 18:45:32
select to_char(sysdate, 'yyyy-MM-dd HH24:mm:ss ') from dual;//mm会显⽰⽉份 2013-11-25 18:11:32
1.⽇期格式参数及其含义说明
D ⼀周中的星期⼏
DAY 天的名字,使⽤空格填充到9个字符
DD ⽉中的第⼏天
DDD 年中的第⼏天
DY 天的简写名
IW ISO标准的年中的第⼏周
IYYY ISO标准的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,两位,⼀位
HH ⼩时,按12⼩时计
HH24 ⼩时,按24⼩时计
MI 分
SS 秒
MM ⽉
Mon ⽉份的简写
Month ⽉份的全名
W 该⽉的第⼏个星期
WW 年中的第⼏个星期
1.⽇期时间间隔操作
当前时间减去7分钟的时间
select sysdate,sysdate - interval '7' MINUTE FROM dual;
当前时间减去7⼩时的时间
select sysdate,sysdate - interval '7' HOUR FROM dual;
当前时间减去7天的时间
select sysdate,sysdate - interval '7' DAY FROM dual;
当前时间减去7⽉的时间
select sysdate,sysdate - interval '7' MONTH FROM dual;
当前时间减去7年的时间
select sysdate,sysdate - interval '7' YEAR FROM dual;
时间间隔乘以⼀个数字
select sysdate,sysdate - 8*interval '2' HOUR FROM dual;
2.⽇期到字符操作
select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual
select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual
select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual
select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual
参考oracle的相关关⽂档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515) 3.字符到⽇期操作
select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
具体⽤法和上⾯的to_char差不多。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论