Welcome 微信登录

首页 / 数据库 / MySQL / 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 截取日期www.linuxidc.com--当天零点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")关于Oracle正则表达的使用Java获取Oracle中CLOB字段转换成String相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数