oracle中对时间的操作以及to_char和to_date用法总结

Oracle时间处理有时候to_char和to_date两个比较关键的函数,在此总结一下:

 

一获取系统当前时间

select sysdate from dual;

 

二 to_char的用法

select to_char(sysdate,'yyyy.mm.dd') from dual
select to_char(sysdate,'yyyy-mm-dd') from dual
select to_char(sysdate,'yyyy mm dd') from dual
select to_char(sysdate,'yyyy*mm*dd') from dual
select to_char(sysdate,'yyyymmdd') from dual

只要被转换的是一个日期,yyyy,mm,dd中间加不加连接符,加什么连接符都可以。我们可以把空格理解为一个空的连接符。

看一个连接符星号的截图:

 

 

 

三 to_date的用法

to_date的要求就稍微多了一点。

 

①带连接符

select to_date('2012.07.26','yyyy-mm-dd') from dual
select to_date('2012.07.26','yyyy.mm.dd') from dual
select to_date('2012.07.26','yyyy mm dd') from dual

select to_date('2012-07-26','yyyy-mm-dd') from dual
select to_date('2012-07-26','yyyy.mm.dd') from dual
select to_date('2012-07-26','yyyy mm dd') from dual

select to_date('2012.7.1','yyyy-mm-dd') from dual
select to_date('2012.7.1','yyyy.mm.dd') from dual
select to_date('2012.7.1','yyyy mm dd') from dual

所谓带连接符,就是我们to_date的第一个参数的yyyy,mm,dd之间有没有连接符。如果有,那么第二个参数必须有连接符,随便是什么连接符。而且mm,dd不一定要对应位数。07可以对应mm,7同样可以对应mm。我们可以把空格理解为一个空的连接符。

 

②不带连接符

select to_date('20120726','yyyymmdd') from dual
select to_date('20120726','yyyy.mm.dd') from dual
select to_date('20120726','yyyy-mm-dd') from dual

不带连接符的必须一一位数对应,第二个字符串带不带连接符均可。07可以匹配mm,但7就不可以匹配mm

③①②中情况查出的结果都是带'-'的,无论有无连接符,连接符是什么。看截图:

 

 

 

四 带上时间的转换

select to_char(sysdate,'yyyy.mm.dd hh24 mi ss') from dual

截图:

 

select to_date('2012.7.1 21:09:09','yyyy-mm-dd hh24 mi ss') from dual

截图:

 

除了时间的显示有些区别,其余的和上述所说原则一致。

 

 

五 项目中的应用

我们以前在java代码中对时间进行操作,其实我们完全可以交给sql语句进行操作

update student set birth = to_date(#birth#,"yyyy-mm-dd");

传来一个日期参数即可,就看你是带连接符的还是不带链接符的了。

 

时间: 2024-12-03 02:32:04

oracle中对时间的操作以及to_char和to_date用法总结的相关文章

oracle中 查询时间管理

1.关于时间显示参数 SQL> alter session set nls_timestamp_format = 'yyyy-mm-dd hh24:mi:ss'; 会话已更改. SQL> select systimestamp from dual; SYSTIMESTAMP --------------------------------------------------------------------------- 14-3月 -07 05.00.33.599000 下午 +08:00

如何在Oracle中实现时间相加处理?[原创]

oracle|原创 如何在Oracle中实现时间相加处理?   今天由于项目的需要,老大让我负责编写Oracle中的存储过程.嘿,以前从来没有接触过,这次是个很好的学习机会,好好把握!   但是,在使用过程中,遇到一个问题,不知道该如何实现时间相加功能,因为系统中需要用来时间相加功能.通过网络找资料,但是最终一无所获.于是,决定自己写一个!希望可以给朋友有所帮助! -- 名称:Add_Times-- 功能:返回d1与NewTime相加以后的结果,实现时间的相加-- 说明:对于NewTime中的日

SQL导入txt以及SQL中的时间格式操作

原文:SQL导入txt以及SQL中的时间格式操作 MySQL中导入txt的指令为: load data local infile "路径名称" into table "表名" 比如我文件的具体位置为"f:\\dataset\\beijing\\xx.txt",创建的表名为"person",则上述指令的具体表达为: load data local infile "f:\\dataset\\beijing\\xx.txt

oracle 中常用时间日期函数使用详解

--日期相关函数 --1.day(date_time),返回一个整数,表示指定日期的datepart中的日子.month(date_time),year(date_time)类似 SELECT DAY(getdate())  --返回23 --2.datepart(datepart,date),返回类型datetime.smalldatetime.date 或 time 值(例如,月份)中以整数表示的部分 SELECT datepart(yy,getdate())  --返回日期分量年2010

Oracle中使用PL/SQL操作COM对象

PL/SQL是由Oracle公司对标准SQL进行扩展,专用于Oracle数据库中程序设计的专用语言,属第三代过程式程序设计语言.从Oracle8开始提供了直接从PL/SQL中调用外部C语言过程,允许开发人员用PL/SQL进行使用C语言编制的程序模块.从Oracle8i开始,又引入了Java程序. 在本文中主要介绍外部例程的基本原理以及使用条件,介绍如何通过引用外部例程来操作Windows中的COM对象,并做了一个操作Excel对象的示例. 本文的运行环境全部建立在Oracle9i和Windows

Oracle中Rollback&Truncate操作对高水位线影响:性能优化

Test 1. 创建一个用户leonarding并授予dba权限 SYS@LEO> create user leonarding identified by leonarding default tablespace users; SYS@LEO> grant dba to leonarding; 2. 创建一个t表,只要结构信息 SYS@LEO> conn leonarding/leonarding LEONARDING@LEO> create table t as select

oracle中一些sql以及存储过程小积累(转)

将当前日期转换为上一个月   SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyymm') --获取当前时间的前一个月             FROM DUAL; select sysdate from dual; /**获取当前时间到秒**/ select  sysdate-3 from dual;/**获取当前2天**/ select round(sysdate)  as 格式成日期 from dual; select to_date('2008-9-

Swing中耗时任务需要另起新线程,这个新线程中更新GUI的操作仍需由EDT来做(转)

最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁:Found one Java-level deadlock:============================="Thread-122":  waiting to lock monitor 0x484052e4 (object 0x1af2bb08, a com.raisecom.ems.temple

关于Oracle中重启数据库的一个bug

关于drop database在oracle中是致命的操作,这个操作自己在测试环境中体验过,会完全删除数据文件,因此这个操作非常敏感但是实用性不强,不过话说过来,这个操作也不是随便就能执行的,除了操作敏感的权限之外,其实还是有一些前提条件的. 在数据库open状态,是无法运行这个命令的.SQL> drop database TEST;drop database TEST              *ERROR at line 1:ORA-00933: SQL command not proper