oracle todate函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle todate函数相关的知识,希望对你有一定的参考价值。

就是在Oracle中我想把例如日期字符串“02.05.10”转换成“02-05-10”的Date格式,怎么完成?求教

1、你这个02.05.10 哪个是年,哪个是月,哪个是日?

2、date就一种格式,你看到的比如2014-01-01这种都只是date的一个显示方式

3、你要是想显示成你现在那样的

select replace(\'02.05.10\',\',\',\'-\') from dual追问

02是年份,05是月份,10是日。我想要Date型的而且不想要年份前2位,只要“02-05-10”

追答

做不到,只能

select to_date(\'02.05.10\',\'yy.mm.dd\') from dual

或者再通过to_char进行转换,以达到显示固定格式的目的

参考技术A replace('.','-'),如果不行的话 需要把. 和- 转化成特殊字符 char(X) 参考技术B create table 表名(create_date date);

insert into 表名(create_date) values to_date('2010-10-22','yyyy-mm-dd');
commit;

date类型就是日期类型,插入的时候需要将字符的2010-10-22 转成date型就行追问

我不想要前两位,而且还要Date型

参考技术C 2010年2月5日吗? to_date('02.05.10','mm-dd-yy') 试试行不?追问

不行,他会把年份的前2位自动加上,我不想要前两位,而且还要Date型

Oracle日期格式转换,tochar(),todate()

本文主要介绍Oracle中的日期转换。

 

1. 日期转化为字符串 (以2016年10月20日为例)

select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘)  strDateTime from dual;    --获取年-月-日 时:分:秒   
--显示结果为:2016-10-20 12:35:21

select to_char(sysdate,‘yyyymmdd hh24:mi:ss‘)  strDateTime from dual;    --获取年月日 时:分:秒  
--显示结果为:20161020 13:39:25

select to_char(sysdate,‘yyyymmdd‘)  strDateTime from dual;     --获取年月日 
--显示结果为:20161020

select to_char(sysdate,‘yyyy‘)  strYear from dual;    --获取年  
 --显示结果为:2016

select to_char(sysdate,‘mm‘)   strMonth  from dual;    --获取月  
--显示结果为:10

select to_char(sysdate,‘dd‘)    strDay    from dual;     --获取日  
--显示结果为:20

select to_char(sysdate,‘hh24‘)   strHour   from dual;     --获取时 
--显示结果为:13

select to_char(sysdate,‘mi‘)  strMinute from dual;   --获取分  
--显示结果为:46

select to_char(sysdate,‘ss‘)  strSecond from dual;   --获取秒
--显示结果为:43

 

2. 字符串和时间互转

select to_date(‘2010-10-20 13:23:44‘,‘yyyy-mm-dd hh24:mi:ss‘) dateTime from dual;
显示结果:2010/10/20 13:23:44

select to_date(‘2010-10-20 13:23:44‘,‘yyyy/mm/dd hh24:mi:ss‘) dateTime from dual;

显示结果:2010/10/20 13:23:44

select to_char( to_date(222,‘J‘),‘Jsp‘) from dual;

显示结果:Two Hundred Twenty-Two

 

如果按照下面的例子写,会报错:ORA-01849:小时值必须介于1和12之间。(因为其中的hh是12进制,没有13所以报错)

select to_date(‘2005-12-25,13:25:59‘,‘yyyy-mm-dd,hh:mi:ss‘) from dual;

 

3. 查询某天是星期几

select to_char(to_date(‘2012-10-20‘,‘yyyy-mm-dd‘),‘day‘) strDay from dual; 
显示结果:星期六
     
select to_char(to_date(‘2012-10-20‘,‘yyyy-mm-dd‘),‘day‘,‘NLS_DATE_LANGUAGE = English‘) strDay from dual;   
显示结果:saturday

 

4. 两个日期间的天数

 select floor(sysdate - to_date(‘20161010‘,‘yyyymmdd‘)) strTime from dual; 

--其中sysdate=2016/10/20 17:10:51
--显示结果:10

 

5. 时间为null的用法

select to_date(null) from dual;

 

6.月份差

select  months_between(date‘2014-04-23‘,date‘2013-04-23‘) days from dual;

 

 本文来自:http://www.jb51.net/article/45591.htm

 

http://www.cnblogs.com/xiaobaihome/archive/2012/03/14/2395568.html
















以上是关于oracle todate函数的主要内容,如果未能解决你的问题,请参考以下文章

带有 ToDate 内置函数的 PIg- NullPointerException

求高人介绍MySQL的datediff函数

求高人介绍MySQL的datediff函数

猪中的 ToDate 函数

Lua tonumber函数

将 toDate 函数设置为到达时间 Anylogic