本文主要介绍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. 字符串和时间互转:to_date()

to_date(‘A','B')的重点是前后的A,B格式要一样,或者A不能比B多字符,如果A有字符,B必须也要有,或者有代替的其他字符。

例如

select to_date('2012-10-20','yyyymmdd') from dual

前面比后面的格式多了" - "符号,就会报错。

 ORA:无效的月份

但是如果前面没有符号,后面有符号,如下面的格式比前面多了" - “符号,依然能输出:

select to_date('20051225,132559','yyyy-mm-dd,hh24:mi:ss') from dual;

输出结果:

 ::

只要格式一样就能输出date类型的格式。

如:

','yyyymmdd') from dual

输出结果:


再比如:

select to_date('2012-10-20','yyyy-mm-dd') from dual

输出结果:


再比如:

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

输出结果:

 ::

如果A有字符,B必须也要有,或者有代替的字符

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

以上的几个公式中,A都有字符” - " 和 “ :”,但是后面的B用字符“ / ” 代替。同样输出同样的结果:

 ::

当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。如:

select to_date('2007-06-12 ', 'yyyy-mm-dd hh24:mi:ss')   from   dual;

输出:


同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。

select to_date('2007-06 ', 'yyyy-mm hh24:mi:ss') from dual;

输出:


但是,不要被这种“惯性”所迷惑,如果忽略MM参数,Oracle并不会取整到年,取整到当前月。

注意:

1.在使用Oracle的to_date函数来做日期转换时,可能会直觉地采用“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;

2.另要以24小时的形式显示出来要用HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm会显示月份

如果按照下面的例子写,会报错: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. 两个日期间的天数

 ','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;

Oracle日期格式转换,tochar(),todate()的更多相关文章

  1. oracle中to_date详细用法示例(oracle日期格式转换)

    这篇文章主要介绍了oracle中to_date详细用法示例,包括期和字符转换函数用法.字符串和时间互转.求某天是星期几.两个日期间的天数.月份差等用法 TO_DATE格式(以时间:2007-11-02 ...

  2. oracle日期格式转换 to_date()

    与date操作关系最大的就是两个转换函数:to_date(),to_char()       to_date() 作用将字符类型按一定格式转化为日期类型:       具体用法:to_date(''2 ...

  3. Oracle日期格式转换

    本文主要介绍Oracle中的日期转换. 1. 日期转化为字符串 (以2016年10月20日为例) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')  st ...

  4. oracle 日期格式

    oracle 日期格式 to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. ...

  5. oracle 日期格式操作

    原文转自:http://hi.baidu.com/gzfvb/blog/item/5062b7f008eb70a8a50f5206.html   Oracle日期格式:   to_date(" ...

  6. 日期格式转换 java 2016-09-03T00:00:00.000+08:00

    /**  * 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX  (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO  yyyy-MM-dd HH:mm:ss  * @ ...

  7. SpringMVC与MyBatis整合之日期格式转换

    在上一篇博客<SpringMVC与MyBatis整合(一)——查询人员列表>中遗留了日期格式转换的问题,在这篇记录解决过程. 对于controller形参中pojo对象,如果属性中有日期类 ...

  8. Python 日期格式转换

    经常需要爬取网站上的时间信息,不同的网站又有不同的日期显示方式.而我需要将日期格式转化为一种特定的格式,所以为了简便和学习,记录下各种不同的日期格式转换. 日期格式化符号: %y :两位数的年份表示( ...

  9. 在SQL Server中 获取日期、日期格式转换

    --常用日期转换参数: PRINT CONVERT(varchar, getdate(), 120 ) 2016-07-20 16:09:01 PRINT replace(replace(replac ...

随机推荐

  1. 2>&1 linux

    2>&1使用 2>&1使用 一 相关知识 1)默认地,标准的输入为键盘,但是也可以来自文件或管道(pipe |).2)默认地,标准的输出为终端(terminal),但是也可 ...

  2. Scalaz(57)- scalaz-stream: fs2-多线程编程,fs2 concurrency

    fs2的多线程编程模式不但提供了无阻碍I/O(java nio)能力,更为并行运算提供了良好的编程工具.在进入并行运算讨论前我们先示范一下fs2 pipe2对象里的一些Stream合并功能.我们先设计 ...

  3. UML简单例子

    平时最常用到的UML图包括:用例图.类图.序列图.状态图. 用例图 主要是描述系统具有的一个功能单元.通常包含角色和用例.角色通常表示为一个系统用户,用例通常表示为系统具有的一个功能.通过用例图我们可 ...

  4. 【翻译】jQuery是有害的

    原文:http://lea.verou.me/2015/04/jquery-considered-harmful/**(第一次翻译,望大家多批评指正) jQuery是有害的 嗨,我总想写一个“X”是有 ...

  5. UIPickerView的使用(三)

    前两篇文章 UIPickerView的使用(一) . UIPickerView的使用(二),学习了UIPickerView的单列选择器和双列选择器的使用. 现在我们一起学习相互依赖的多列选择器 1.遵 ...

  6. Android 一个对sharedpreferences 数据进行加密的开源库

    1.项目地址 https://github.com/iamMehedi/Secured-Preference-Store 2.使用方法 2.1.存数据 //存数据 SecuredPreferenceS ...

  7. 2016最新cocoapods安装流程,安装过程中遇到的问题及解决方法

    现在的cocoapods与之前比较.有很多不一样的地方.自己试了一试,终于搞定.现在大概纪录一下. 1.首先查看ruby是否是最新版的. ruby是通过rvm安装的所以需要先安装rvm后查看ruby是 ...

  8. 又一个高性能轻量级的iOS模型框架YYModel

    前言 iOS的模型框架其实有很多了,去年研究过Mantle,也了解过JSONModel.MJExtension,最近的项目项目优化的时候,再次考虑,基于轻量级.高性能的考虑,最终选择了YYModel. ...

  9. jQuery对表单的操作

    表单应用 一个表单有3个基本组成部分: 表单标签:包含处理表单数据所用的服务器端程序URL以及数据提交到服务器的方法 表单域:包含文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上 ...

  10. .NET重构—单元测试的代码重构

    阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: ...