常用日期型資料類型:date與TIMESTAMP 二者在資料庫中的儲存固定為7個位元組。
1.
擷取系統時間 select sysdate from dual; --時間格式取決於系統設定
2.
將日期轉字元:
select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual; --顯示:15-11-25 19:55:42
將字元轉日期:
select to_date('2015-11-25 19:48:52','yyyy-mm-dd,hh24:mi:ss') from dual; --顯示:2015/11/25 19:48:52
3.
求兩個日期的間隔時間:返回的單位為天,小時及分秒會換算成小數
select date'2015-11-25'-date'2015-11-20' from dual;
--也可以藉助數學函數
select floor(sysdate - to_date('20151120','yyyymmdd')) from dual;
4.oracle trunc截斷日期函數
select sysdate,trunc(sysdate,'dd') from dual; 截取今天
select sysdate,trunc(sysdate,'d') from dual; 截取本周第一天
select sysdate,trunc(sysdate,'mm') from dual; 截取本月第一天
5.時間為null的用法舉例
select id, active_date from table1
UNION
select 1, TO_DATE(null) from dual;
5.處理月份天數不定的辦法
select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
案例一
create table uu_test_1(
C1 DATE,
C2 TIMESTAMP); --能儲存小數秒,預設為6位
insert into uu_test_1(c1,c2) values(date'2015-11-25',timestamp'2015-11-25 19:48:52');
insert into uu_test_1(c1,c2) values(to_date('2015-11-25 19:48:52','YYYY-MM-DD HH24:MI:SS'),
to_timestamp('2015-11-25 19:48:52','YYYY-MM-DD HH24:MI:SS.FF6'));
select * from uu_test_1;
案例二 C開發語句
char c_USER_NUM[30]={0};
char ACTIVE_DATE[10]={0};
char INACTIVE_DATE[10]={0};
EXEC SQL SELECT a.USER_NUM,to_char(a.ACTIVE_DATE,'yyyymmddhh24miss'),to_char(a.INACTIVE_DATE,'yyyymmddhh24miss')
into :c_USER_NUM,:ACTIVE_DATE,:INACTIVE_DATE
FROM t_test a
WHERE a.user_num = '123456'; 連結參考:
http://blog.itpub.net/9827879/viewspace-1116421/
http://www.cnblogs.com/xiaobaihome/archive/2012/03/14/2395568.html