本文主要介绍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,Oracle日期格式转换,tochar(),todate()相关推荐

  1. cursor is oracle 日期_Oracle时间计算------日期格式参数含义说明

    Oracle时间计算------日期格式参数含义说明 D 一周中的星期几 DAY 天的名字,使用空格填充到9个字符 DD 月中的第几天 DDD 年中的第几天 DY 天的简写名 IW ISO标准的年中的 ...

  2. oracle的时间各式,Oracle9i日期格式几点说明

    1. 在 Oracle9i 之前, 日期格式的数据类型默认格式为"DD-MON-YY",而在 Oracle9i 中 为了解决千年问题, 而引入了新的日期型格式为"DD-M ...

  3. ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digi

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)             Year:               yy two digits ...

  4. oracle数据库时分秒格式_Oracle数据库日期格式大全

    Oracle中TO_DATE格式2009-04-14 10:53TO_DATE格式(以时间:2007-11-02   13:45:25为例) Year: yy two digits 两位年       ...

  5. oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别

    oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别 1.java 1)分钟用mm表示 24小时制: java(区分大小写):yyyy-MM-dd HH:mm: ...

  6. oracle tochar 格式 ¥,ORACLE函数TO_CHAR以及数字转换格式

    ORACLE函数TO_CHAR以及数字转换格式 数点,则要和D配合使用,不能和点号配合. 11 L(本地货币符号) 'L999' 是C的本地版本.可以放在整个格式的最前面和最后面. TO_CHAR(1 ...

  7. ea连接远程oracle报错,PLSQL Developer日期格式如何定制化

    兄弟团队的开发人员,提了个问题, 给了相应示例,如图所见,左侧预投产日期格式,显示"01-JAN-2222",右侧生产日期的格式,显示"01-01月-2222" ...

  8. oracle 聚合函数 日期,Oracle日期函数/字符函数/数字函数/转换函数/聚合函数

    Oracle日期函数: MONTHS_BETWEEN:返回两个日期之间月份的差值 MONTHS_BETWEEN('01-EP-95','11-JAN-94') ===>19.6774194 AD ...

  9. 日期格式转换成时间戳格式php,php日期转时间戳,指定日期转换成时间戳

    有朋友问php与mysql有没有办法把日期转时间戳或把指定日期转换成时间戳呢,其实这个是有并且还非常的简单,下面我来给大家介绍介绍. 一.在MySQL中完成 这种方式在MySQL查询语句中转换,优点是 ...

  10. 字符串日期 转换成 需要的格式的 字符串日期(超强)

    字符串日期 转换成 需要的格式的 字符串日期 调用:dateformat(String pattern,Object date, boolean ifNullGetNow): 参数1:patern:你 ...

最新文章

  1. Android 逐帧动画(Frame)
  2. Springmvc+Easyui 搜索,新增,删除,修改
  3. UVA10305 Ordering Tasks
  4. HD 1159 Common Subsequence (最长公共子序列)
  5. linux査 到漠河 装apache,如何在Ubuntu上搭建一台安全的Apache Web服务器
  6. tab切换webuploader失效的解决方法
  7. Python安装第三方库临时使用国内源
  8. 如何获得查询的执行计划?(一)
  9. ACM HDU 2516 取石子游戏(博弈)
  10. 惯量比多少合适_详解】伺服电机负载惯量比的合理取值汇总
  11. 网站banner设计有什么好的方法
  12. Zynga研发之道探秘:用数据说话
  13. SLG变现强劲,却易遭黑产侵袭,如何破局?SLG游戏安全方案定制做到出奇制胜!
  14. PIPI OJ 1203: PIPI发工资(拓扑排序)
  15. python实现简易数独小游戏
  16. ES6——TDZ(暂时性死区)
  17. RT-Thread柿饼控件(1)-- AnimatedImage
  18. 用傅里叶卷积实现万物隐身!三星这个LaMa神器可试玩!
  19. Java下载文件时文件名出现乱码(但文件内容正常)
  20. android webview aosp com.android.webview

热门文章

  1. 拓扑排序 php,数据结构与算法(周测7-拓扑排序和AOV网络)
  2. Springboot接受文件与发送文件
  3. MQTT协议发送GPS坐标到服务器
  4. 车载Camera术语大全
  5. Oracle DB 使用RMAN恢复目录
  6. 音乐制作软件-Ableton Live Suite 9.7.7 X86 PC
  7. win10密码忘了怎么办_OPPO Find X忘了手机密码怎么办?手机怎么解锁?
  8. android+wear+和iphone,Android Wear手表兼容iPhone:和苹果抢用户
  9. 【优化求解】基于混合蛙跳算法实现最优求解matlab源码
  10. 斐讯k2搭建php环境,斐讯K2路由器的连接及上网设置教程