1. 程式人生 > >關於DB2中時間日期的操作

關於DB2中時間日期的操作

學習到關於 時間日期的操作是比較難以理解的   

1:替換   2012-03-11  替換為 20120311    語句是  replace('2012-03-11','-','')  也就是字串替換函式    一般適比較方便的   得到的也是一個字串

2:  關於計算時間差值--時間戳

TIMESTAMPDIFF(n,CHAR(TIMESTAMP('2012-05-25 10:23:24')-TIMESTAMP('2012-05-25 10:20:24')))

根據兩個時間戳記之間的時差,返回由第一個引數定義的型別表示的估計時差。(整除部分,不會四捨五入)


   n=2:秒 ; n=4 :分; n=8:時;


   n=16 :天; n=32 :周;n=64:月;


   n=128 :季度; n=256:年;

TIMESTAMPDIFF(n,TIMESTAMP('2012-05-25 10:23:24')  )  -    TIMESTAMPDIFF(n,TIMESTAMP('2012-05-25 10:20:24'))   也可以實現

也是根據網上給出的

網上還給出

db2日期和時間常用匯總
1、db2可以通過SYSIBM.SYSDUMMY1、SYSIBM.DUAL獲取暫存器中的值,也可以通過VALUES關鍵字獲取暫存器中的值。


SELECT 'HELLO DB2' FROM SYSIBM.SYSDUMMY1;--HELLO DB2
SELECT 'HELLO DB2' FROM SYSIBM.DUAL;--HELLO DB2
VALUES 'HELLO DB2';--HELLO DB2
2、CURRENT DATE獲取當前日期;CURRENT TIME獲取當前時間;CURRENT TIMESTAMP獲取當前時間戳(含年、月、日、時、分、秒)。


VALUES CURRENT DATE--2012/5/25 0:00:00;
VALUES CURRENT TIME--20:48:53;
VALUES CURRENT TIMESTAMP--2012/5/25 20:49:12;
3、YEAR()獲取年;MONTH()獲取月;DAY()獲取日;
     HOUR()獲取小時;MINUTE()獲取分鐘;SECOND()獲取秒;
     DATE()獲取日期;TIME()獲取時間;TIMESTAMP()獲取時間戳。
     以上函式引數可以是日期時間型別,也可以為日期時間格式的字串。


複製程式碼
VALUES YEAR(CURRENT TIMESTAMP);/*2012*/  VALUES YEAR('2012-05-25 21:18:12');/*2012*/
VALUES MONTH(CURRENT TIMESTAMP);/*5*/  VALUES MONTH('2012-05-25 21:18:12');/*5*/ 
VALUES DAY(CURRENT TIMESTAMP);/*25*/  VALUES DAY('2012-05-25 21:18:12');/*25*/
VALUES HOUR(CURRENT TIMESTAMP);/*21*/  VALUES HOUR('2012-05-25 21:18:12');/*21*/
VALUES MINUTE(CURRENT TIMESTAMP);/*18*/  VALUES MINUTE('2012-05-25 21:18:12');/*18*/
VALUES SECOND(CURRENT TIMESTAMP);/*12*/   VALUES SECOND('2012-05-25 21:18:12');/*12*/
VALUES DATE(CURRENT TIMESTAMP);/*2012/5/25 0:00:00*/  VALUES DATE('2012-05-25 21:18:12');/*2012/5/25 0:00:00*/
VALUES TIME(CURRENT TIMESTAMP);/*21:18:12*/  VALUES TIME('2012-05-25 21:18:12');/*21:18:12*/
VALUES TIMESTAMP(CURRENT TIMESTAMP);/*2012/5/25 21:18:12*/  VALUES TIMESTAMP('2012-05-25 21:18:12');/*2012/5/25 21:18:12*/
複製程式碼
4、db2時間可以直接加減帶單位的時間長度。


複製程式碼
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 YEAR;--2013/5/25 21:18:12
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 MONTH;--2012/6/25 21:18:12
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 DAY;--2012/5/26 21:18:12
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 HOUR;--2012/5/25 22:18:12
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 MINUTE;--2012/5/25 21:19:12
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 SECOND;--2012/5/25 21:18:13
VALUES TIMESTAMP('2012-5-25 21:18:12')+1 YEAR+1 MONTH+1 DAY+1 HOUR+1 MINUTE +1 SECOND ;--2013/6/26 22:19:13
VALUES TIMESTAMP('2012-5-25 21:18:12')-1 YEAR-1 MONTH-1 DAY-1 HOUR-1 MINUTE -1 SECOND ;--2011/4/24 20:17:11
複製程式碼
5、通過days()可以獲取兩個時間相差天數。


VALUES DAYS(CURRENT DATE)-DAYS(CURRENT DATE-1000 DAY);--1000 
6、TO_CHAR()把時間轉換成指定格式的字串型別(db2較低版本不支援)。
     “YYYY-MM-DD HH:MI:SS” 十二小時制;“YYYY-MM-DD HH24:MI:SS” 二十四小時制。
     (“YYYY-MM-DD hh:mm:ss”不會報錯,但是mm值取的是月的值。)


SELECT TO_CHAR(TIMESTAMP('2012-5-25 21:18:12'),'YYYY-MM-DD') FROM SYSIBM.DUAL;--2012-05-25
SELECT TO_CHAR(TIMESTAMP('2012-5-25 21:18:12'),'YYYY-MM-DD HH:MI:SS') FROM SYSIBM.DUAL;--2012-05-25 09:18:12
SELECT TO_CHAR(TIMESTAMP('2012-5-25 21:18:12'),'YYYY-MM-DD HH24:MI:SS') FROM SYSIBM.DUAL;--2012-05-25 21:18:12
(SELECT TO_CHAR(TIMESTAMP('2012-5-25 21:18:12'),'YYYY-MM-DD HH24:MM:SS') FROM SYSIBM.DUAL;--2012-05-25 21:05:12)
7、DAYNAME()返回指定日期的星期名,該星期名是由首字元大寫、其他字元小寫組成的英文名。


values DAYNAME(current timestamp)--Friday(當天為星期五)
8、DAYOFWEEK()返回引數中的星期幾,用範圍在 1-7 的整數值表示,其中 1 代表星期日。


values DAYOFWEEK(current timestamp);--6(當天為星期五)
9、DAYOFWEEK_ISO()返回引數中的星期幾,用範圍在 1-7 的整數值表示,其中 1 代表星期一。


values DAYOFWEEK_ISO(current timestamp);--5(當前為星期五)
10、DAYOFYEAR()返回引數中一年中的第幾天,用範圍在 1-366 的整數值表示。


values DAYOFYEAR(DATE('2012-02-01'));--32
11、MONTHNAME()對於引數的月部分的月份,返回一個大小寫混合的字串(例如,January)。


values MONTHNAME(CURRENT TIMESTAMP);--May(當前為五月)
12、WEEK()返回引數中一年的第幾周,用範圍在 1-54 的整數值表示。以星期日作為一週的開始。(引數可以為日期格式或者日期格式的字串)


VALUES WEEK('2012-05-25')--21
13、TIMESTAMPDIFF(n,CHAR(TIMESTAMP('2012-05-25 10:23:24')-TIMESTAMP('2012-05-25 10:20:24')))根據兩個時間戳記之間的時差,返回由第一個引數定義的型別表示的估計時差。(整除部分,不會四捨五入)


   n=2:秒 ; n=4 :分; n=8:時;


   n=16 :天; n=32 :周;n=64:月;


   n=128 :季度; n=256:年;


複製程式碼
VALUES TIMESTAMPDIFF(2,CHAR(TIMESTAMP('2012-05-25 10:23:24')-TIMESTAMP('2012-05-25 10:20:24')));--180秒
VALUES TIMESTAMPDIFF(4,CHAR(TIMESTAMP('2012-05-25 12:23:24')-TIMESTAMP('2012-05-25 10:20:22')));--123分鐘
VALUES TIMESTAMPDIFF(8,CHAR(TIMESTAMP('2012-05-25 12:23:24')-TIMESTAMP('2012-05-25 10:20:22')));--2小時
VALUES TIMESTAMPDIFF(16,CHAR(TIMESTAMP('2012-07-25 12:23:24')-TIMESTAMP('2012-05-25 10:20:22')));--60天
VALUES TIMESTAMPDIFF(32,CHAR(TIMESTAMP('2012-07-25 12:23:24')-TIMESTAMP('2012-05-25 10:20:22')));--8周
VALUES TIMESTAMPDIFF(64,CHAR(TIMESTAMP('2012-07-25 12:23:24')-TIMESTAMP('2012-05-25 10:20:22')));--2月
VALUES TIMESTAMPDIFF(128,CHAR(TIMESTAMP('2012-08-25 10:20:22')-TIMESTAMP('2012-05-25 10:20:22')));--1季度
VALUES TIMESTAMPDIFF(256,CHAR(TIMESTAMP('2013-05-25 10:20:22')-TIMESTAMP('2012-05-25 10:20:22')));--1年
複製程式碼
14、時期的格式。ISO,使用國際標準組織(ISO)制訂的日期和時間格式;USA,使用美國日期和時間的 IBM 標準格式。


values char(current date,iso)--2012-05-25
values char(current date,usa)--05/25/2012
values char(current time,iso)--23.21.32