首页 > 数据库 > Oracle > 【转】Oracle 有关时间的操作
共三部分:
第一部分:oracle sql日期比较:
http://www.blogjava.net/forker/archive/2007/09/07/143467.html#Post
第二部分:Oracle
http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html
第三部分:
获取昨天:
select trunc(SYSDATE-1)
检查一下:
select to_char (trunc(SYSDATE-1),'yyyy-mm-dd HH24:MI:SS') from dual;
获取上个月第一天00:00:00:
获取上个月今天00:00:00:
SELECT trunc(add_months(sysdate,-1))FROM dual
获得本季度第一天
SELECT TRUNC(add_months(SYSDATE,0),'Q') FROM dual
获得上季度第一天
SELECT TRUNC(add_months(SYSDATE,-3),'Q') FROM dual
获得去年1月1日
to_char(add_months(trunc(sysdate, 'Year'), -12), 'YYYY-MM-DD')
between and 前面的时间小后面的时间大
to_date('20110105','YYYYMMDD')-7 此处 -7代表天
第四部分:
第一部分:oracle sql日期比较:
oracle sql日期比较:
在今天之前:
在今天之后:
精确时间:
在某段时间内:
格式化日期输出格式:
to_char(w.sample_time, 'yyyy-mm-dd ')
第二部分:Oracle
Oracle 获取当前日期及日期格式
返回系统日期,输出 25-12月-09
select sysdate from dual;
mi是分钟,输出 2009-12-25 14:23:31
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss')
from dual;
mm会显示月份,输出 2009-12-25 14:12:31
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss')
from dual;
输出 09-12-25 14:23:31
select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from
dual
select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss')
from dual
则会报错,因为小时hh是12进制,14为非法输入,不能匹配。
输出 $10,000,00 :
select to_char(1000000,'$99,999,99') from dual;
输出 RMB10,000,00 :
select to_char(1000000,'L99,999,99') from dual;
输出 1000000.12 :
select trunc(to_number('1000000.123'),2) from dual;
select
to_number('1000000.123') from dual;
转换的格式:
表示 year 的:y 表示年的最后一位 、
表示month的: mm 用2位数字表示月 、
表示day的:dd
表示hour的:hh
表示minute的:mi 2位数表示分钟
表示second的:ss 2位数表示秒 60进制
表示季度的:q 一位数 表示季度 (1-4)
另外还有ww 用来表示当年第几周 w用来表示当月第几周。
24小时制下的时间范围:00:00:00-23:59:59
12小时制下的时间范围:1:00:00-12:59:59
数字格式:
补充:
当前时间减去7分钟的时间
select sysdate,sysdate - interval '7' MINUTE from
dual;
当前时间减去7小时的时间
select sysdate - interval '7' hour from
dual;
当前时间减去7天的时间
select sysdate - interval '7' day from
dual;
当前时间减去7月的时间
select sysdate,sysdate - interval '7' month from
dual;
select sysdate,sysdate - interval '7' year from
dual;
select sysdate,sysdate - 8*interval '7' hour from dual;
含义解释:
第四部分:
常用的时间格式 在oracle中有 yyyy-mm-dd hh24:mi:ss
相信很多人都有过统计某些数据的经历,比如,要统计财务的情况,可能要按每年,每季度,每月,甚至每个星期来分别统计。那在oracle中应该怎么来写sql语句呢,这个时候Oracle的日期函数会给我们很多帮助。
1。Sysdate
SQL>
SYSDATE
----------
21-6月
2。Last_day
SQL>
LAST_DAY(S
----------
30-6月
3。Add_months(d,n)
用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value,number_of_months)
SQL>
ADD_MONTHS
----------
21-8月
4。Months_between(f,s)
SQL>
MONTHS_BETWEEN(SYSDATE,TO_DATE('2005-11-12','YYYY-MM-DD'))
----------------------------------------------------------
5。NEXT_DAY(d,
返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。
SQL>
NEXT_DAY(T
----------
26-6月
6。current_date()返回当前会话时区中的当前日期
date_value:=current_date
SQL>
SQL>
SESSIONTIMEZONE
---------------
+08:00
SQL>
会话已更改。
SQL>
SESSIONTIMEZONE
---------------
-11:00
7。current_timestamp()以timestamp
SQL>
CURRENT_TIMESTAMP
---------------------------------------------------------------------------
21-6月
8。dbtimezone()返回时区
SQL>
DBTIME
------
-08:00
9。extract()找出日期或间隔值的字段值
date_value:=extract(date_field
SQL>
This
----------
SQL>
----------
10。localtimestamp()返回会话中的日期和时间
SQL>
LOCALTIMESTAMP
---------------------------------------------------------------------------
21-6月
常用日期数据格式(该段为摘抄)
Y或YY或YYY
SYEAR或YEAR
Q
MM
RM
Month