YYYY年 Q季度
MM月 month月
WW當年第幾周 W本月第幾周
DDD 當年第幾天 DD當月第幾天 D當周內第幾天 DY當周內星期幾 day當周內星期幾
HH或HH12:12進制小時數 HH24:24小時制
MI:分鍾數(0~59) SS:秒數(0~59)
1、Sysdate:當前日期和時間
Select sysdate from dual
2、Last_day():本月最后一天
Select last_day(sysdate) from dual;
3、Add_months(d,n):當前日期d后推n個月
Select add_months(sysdate,2) from dual;
4、Months_between(f,s):日期f和s間相差月數
select months_between(sysdate,to_date('2005-11-12','yyyy-mm-dd'))from dual;
5、NEXT_DAY(d,day_of_week):返回由"day_of_week"命名的,在變量"d"指定的日期之后的第一個
工作日的日期。參數"day_of_week"必須為該星期中的某一天。
返回下個星期的日期,day為1-7或星期日-星期六,1表示星期日
SELECT next_day(to_date('20050620','YYYYMMDD'),1) FROM dual;
--------------------------------
每周的星期五晚上23:00
select trunc(next_day(sysdate,'星期五'))+23/24 from dual;
---------------------------------
6、current_date():返回當前會話時區中的當前日期
select current_date from dual;
7、current_timestamp():以timestamp with time zone數據類型返回當前會話時區中的當前日期
select current_timestamp from dual;
8、dbtimezone():返回時區
select dbtimezone from dual;
9、extract():找出日期或間隔值的字段值
select extract(year from add_months(sysdate,36)) " Years" from dual;
10、localtimestamp()返回會話中的日期和時間
select localtimestamp from dual;
天數增減:
select (sysdate - 3) from dual;
select (sysdate + 3) from dual;
今天晚上23:00:trunc(sysdate)+23/24
TRUNC(SYSDATE)+(1440*60-1)/(1440*60):2015-06-01 23:59:59
TRUNC(SYSDATE)+1-1/86400:2015-06-01 23:59:59
增加一小時:SYSDATE + 1/24
增加10分鍾: 'SYSDATE + 10/(60*24)'
增加30秒: 'SYSDATE + 30/(60*24*60)'
當前時間減去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;
當前時間減去7年的時間
select sysdate,sysdate - interval '7' year from dual;
時間間隔乘以一個數字
select sysdate,sysdate - 8*interval '7' hour from dua
上月末天:
select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;
上月今天:
select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;
上月首天:
select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;
判斷上下午
if to_date(to_char(sysdate, 'hh24:mi:ss'), 'hh24:mi:ss') <
to_date('12:00:00', 'hh24:mi:ss') then
v_zblb := '上午';
else
v_zblb := '下午';
end if;
按照每周進行統計:
select to_char(sysdate,'ww') from dual group by to_char(sysdate,'ww');
要找到某月中所有周五的具體日期:
select to_char(t.d,'YY-MM-DD') from ( select trunc(sysdate, 'MM')+rownum-1
as d from dba_objects where rownum < 32) t where to_char(t.d, 'MM') =
to_char(sysdate, 'MM') and trim(to_char(t.d, 'Day'))
處理月份天數不定的辦法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual;
找出今年的天數
select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual ;
閏年的處理方法
to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )
TO_CHAR把日期或數字轉換為字符串
TO_CHAR(number, '格式')
TO_CHAR(salary, '$99,999.99')
TO_CHAR(date, '格式') to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
TO_CHAR(sysdate,'YYYY"年"fmMM"月"fmDD"日" HH24:MI:SS')
TO_DATE把字符串轉換為數據庫中的日期類型
TO_DATE(char, '格式')
TO_NUMBER將字符串轉換為數字
TO_NUMBER(char, '格式')
日期時間轉為日期:
to_date(to_char(b.billing_date_time , 'yyyy/mm/dd'), 'yyyy-mm-dd')
to_date('2014-03-12 14:00:00','YYYY-MM-DD HH24:MI:SS')
年齡:
trunc(months_between(sysdate,t.birthday)/12) floor(MONTHS_BETWEEN(sysdate,b.date_of_birth)/12)