`
danwind
  • 浏览: 226465 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

Oracle date timestamp 时间函数总结

 
阅读更多

yyyy-mm-dd hh24:mi:ss.ff 年-月-日 时:分:秒.毫秒

 

--上一月,上一年
select add_months(sysdate,-1) last_month,add_months(sysdate,-12) last_year from dual;
--下一月,下一年
select add_months(sysdate,1) last_month,add_months(sysdate,12) last_year from dual;

 

--当月最后一天

select LAST_DAY(sysdate) from dual;

--下周日期

select next_day(sysdate,'星期五') "下周五" from dual;
select next_day(sysdate, 'Friday') "Next Friday" from dual;
select next_day(sysdate, 4) from dual;
如果你不确定自己的时区或者你担心从一个时区移植到另一个时区时,SQL语句会出错,Oracle还允许你用数字的形式来表示工作日。
但是要记得一点:1表示的是周日,2表示的是周一,3表示的是周二,依此类推。

 

--固定日期一天
select * from account a where a.applytime>= to_date('2011-02-26','yyyy-mm-dd') and a.applytime< to_date('2011-02-27','yyyy-mm-dd');
--前天一天
select * from account a where a.applytime>= to_date(to_char(sysdate-2,'yyyy-mm-dd'),'yyyy-mm-dd') and a.applytime< to_date(to_char(sysdate-1,'yyyy-mm-dd'),'yyyy-mm-dd');
昨天一天
select * from dxw_tmp a where a.applytime>= to_date(to_char(sysdate-1,'yyyy-mm-dd'),'yyyy-mm-dd') and a.applytime< to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd');
--今天一天
select * from account a where a.applytime>= to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') and a.applytime< to_date(to_char(sysdate+1,'yyyy-mm-dd'),'yyyy-mm-dd');

上月第一天
select to_date(to_char(add_months(sysdate,-2)+1,'yyyy-mm-dd'),'yyyy-mm-dd') from dual ;
上月最后一天
select to_date(to_char(add_months(sysdate,-1),'yyyy-mm-dd'),'yyyy-mm-dd') from dual;

select * from account a where a.applytime>= to_date(to_char(add_months(sysdate,-2)+1,'yyyy-mm-dd'),'yyyy-mm-dd') and a.applytime<= to_date(to_char(add_months(sysdate,-1),'yyyy-mm-dd'),'yyyy-mm-dd');

select to_date(to_char(add_months(sysdate,-2),'yyyy-mm-dd'),'yyyy-mm-dd') from dual;
select to_date(to_char(add_months(sysdate,-3)+1,'yyyy-mm-dd'),'yyyy-mm-dd') from dual ;

--trunc 截取日期

--当天零点

select trunc(sysdate,'dd') from dual;

--当月一号

select trunc(sysdate,'mm') from dual;

--本年一月一号

select trunc(sysdate,'yyyy') from dual;

--可以根据需要自己去截取

关于毫秒:

Oracle 毫秒的存储必须字段类型为 timestamp(6) –数字表示存储的毫秒位数

--当前毫秒级时间

select to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;

--字符串转为 timestamp类型

select to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.ff6') from dual;

--timestamp转为字符型

select to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss.ff6') from dual;

PS: ff后面的数字表示获得的毫秒位数,默认是6;一般ff3 获得三位毫秒数。

 

如果你想把DATE类型转换成TIMESTAMP类型,就使用CAST函数。

select cast(sysdate as timestamp) from dual;

但是值得注意的是:在转换后的时间段尾部有了一段“.000000”。这是因为从date转换过来的时候,没有小数秒的信息,缺省为0。而且显示格式是按照参数NLS_TIMESTAMP_FORMAT定的缺省格式显示。当你把一个表中date类型字段的数据移到另一个表的timestamp类型字段中去的时候,可以直接写INSERT SELECT语句,oracle会自动为你做转换的。

 

注意: to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型。这已经清楚表明了在当两个时间的差别极度重要的情况下,使用TIMESTAMP数据类型要比DATE数据类型更确切。

 

还值得一提的是:毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s。当然你想保存6位毫秒也是有办法的:

insert 值指定六位:to_timestamp('2012-02-03 10:29:46.453234','yyyy-mm-dd hh24:mi:ss.ff6')

 

转自:http://blog.csdn.net/runming918/article/details/7231259

分享到:
评论

相关推荐

    Oracle date 和 timestamp 区别详解

    Oracle date 和 timestamp 区别详解 1.DATE数据类型  这个数据类型我们实在是太熟悉了,当我们需要表示日期和时间的话都会想到date类型。它可以存储月,年,日,世纪,时,分和秒。它典型地用来表示什么时候事情...

    oracle中日期类型与unix 时间戳的转换

    Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_oracle(1551774286),oracle_to_unix(SYSDATE) FROM dual;

    oracle函数大全分析函数,聚合函数,转换函数,日期型函数,字符型函数,数值型函数,其他函数.docx

    Oracle 日期型函数是对日期类型数据进行处理和分析的函数,包括 SYSTIMESTAMP、CURRENT_DATE、CURRENT_TIMESTAMP 等。 五、字符型函数 Oracle 字符型函数是对字符类型数据进行处理和分析的函数,包括 CONCAT、...

    Oracle迁postgre 不兼容字段、函数等更改

    8. TO_DATE 函数:Oracle 中的 TO_DATE 函数在 PostgreSQL 中对应的函数是 TO_TIMESTAMP。例如,在 Oracle 中的 TO_DATE('2019-01-01', 'YYYY-MM-DD') 等同于 PostgreSQL 中的 TO_TIMESTAMP('2019-01-01', 'YYYY-MM-...

    Oracle实用教程_04章_Oracle数据类型和函数[整理].pdf

    Oracle 数据类型和函数 Oracle 数据类型是指一组性质相同的值的集合以及定义于这个值集合上的一组操作的总称。在 Oracle 数据库中,数据类型可以分为字符型、数值型、日期型和其它类型等几类。 Oracle 数据类型...

    oracle日期时间型timestamp的深入理解

     2、timestamp转成date型 代码如下: select cast(to_timestamp(’01-10月-08 07.46.41.000000000 上午’,’dd-MON-yy hh:mi:ss.ff AM’) as date) timestamp_to_datefrom dual; 3、date型转成timestamp 代码如下:...

    Oracle中TIMESTAMP的几种类型介绍与实例

    时间戳类型,与date的区别在于,date不能精确到毫秒,而timestamp可以精确到毫秒,毫秒的位数为0-9位,默认为6位。 SQL&gt; select tp from timestamp_test; TP ----------------------------------------------------...

    Oracle to_char

    Oracle 的 to_char 函数是一个功能强大且灵活的格式化函数,能够将各种数据类型(日期/时间、整数、浮点数、数字)转换成格式化的字符串,并且能够从格式化的字符串转换回原始的数据类型。该函数的第二个参数是用于...

    《Oracle Database编程指南》13-03:日期时间函数(Datetime Functions)

    日期时间函数(Datetime Functions)操作日期(date)、时间戳(timestamp,带有时区的时间戳,以及带有本地时区的时间戳)和interval(从天到秒的时间间隔,从年到月的时间间隔)值。 有些日期时间函数是为Oracle DATE...

    Oracle数据库SQL基本应用与介绍

    Oracle是能够安装在目前为止所有的计算机上并...日期型、期间型:date、timestamp、timestamp with time zone等。 Oracle数据库对象:cluster、数据库联接、触发器、外部程序库、索引、Java类、演算子、表、视图等等

    Oracle数据定义语言.ppt

    主要的日期时间类型有 DATE 和 TIMESTAMP。 9. RAW 数据类型 RAW 数据类型用于存储二进制数据,最多能存储 2000 个字节。 通过学习 Oracle 数据定义语言,可以更好地理解和掌握 Oracle 数据库的结构和管理。

    Oracle 数据类型

    5、DATE数据类型,使用7个字节固定长度,每个字节分别存储世纪,年,月,日 ,时,分,秒,ORACLE中SYSDATE函数的功能是返回当前的日期和时间 6、TIMESTAMP数据类型,和DATE相似,但是这个类型的秒精确到小数点后6...

    Oracle迁移到PG建议.docx

    * DATE、TIME、TIMESTAMP:在Oracle中,DATE、TIME、TIMESTAMP是不同的数据类型,而在Postgresql中,只有一个 TIMESTAMP类型。 * NULL和CLOB、TEXT、BLOB、BYTEA:在Oracle中,NULL是空值,而CLOB、TEXT、BLOB、BYTE...

    Oracle关于时间/日期的操作

    Oracle 中关于日期的操作是数据库管理系统中的一项重要功能,它提供了多种函数来处理日期和时间数据。在本节中,我们将详细介绍 Oracle 中关于时间/日期的操作。 1. add_months() 函数 add_months() 函数用于从一...

    Oracle数据库语句大全.doc

    Oracle 数据库语句大全还包括各种 SQL 函数,例如 SYSDATE 和 SYSTIMESTAMP,用于返回系统当前日期、时间和时区。 三.数据控制语言(DCL) 数据控制语言(DCL)用于控制数据库的访问权限,包括授予用户权限和...

    Oracle_Database_11g完全参考手册.part3/3

    附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...

    Oracle_Database_11g完全参考手册.part2/3

    附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...

    Oracle计算时间差为毫秒的实现代码

    Oracle 中我们知道用 TO_DATE 函数可以进行秒、分、时、天、月、年、周等时间差的计算,但是毫秒却不好计算,TO_DATE 函数只能精确到秒,毫秒则只能用 TO_TIMESTAMP 函数,但是这个函数不像 TO_DATE 这样直接减出来...

    Oracle练习笔试大全

    //(函数to-date 查询公司在所给时间以后入职的人员) 43、select sal from emp where sal &gt; to_number('$1,250.00', '$9,999.99'); //(函数to_number()求出这种薪水里带有特殊符号的) 44、select ename, sal*12 + ...

    PL/SQL 日期时间类型函数及运算

    * 获取当前日期和时间:SYSDATE、CURRENT_DATE、CURRENT_TIMESTAMP、LOCALTIMESTAMP 等函数用于获取当前日期和时间。 * 日期和时间运算:ADD_MONTHS、MONTHS_BETWEEN、NEXT_DAY 等函数用于进行日期和时间的运算。 * ...

Global site tag (gtag.js) - Google Analytics