上一篇提到過在DB2中,可以通過SYSIBM.SYSDUMMY1、SYSIBM.DUAL獲取寄存器中的值,也可以通過VALUES關鍵字獲取寄存器中的值。則在這篇中,我們直接用VALUES關鍵字來看看這些函數。
1.CURRENT DATE獲取當前日期;CURRENT TIME獲取當前時間;CURRENT TIMESTAMP獲取當前時間戳(含年、月、日、時、分、秒);YEAR()獲取年;MONTH()獲取月;DAY()獲取日; HOUR()獲取小時;MINUTE()獲取分鍾;SECOND()獲取秒;DATE()獲取日期;TIME()獲取時間;TIMESTAMP()獲取時間戳。
以上函數參數可以是日期時間類型,也可以為日期時間格式的字符串。
--獲取日期: VALUES DATE(CURRENT TIMESTAMP);--2016/1/6 VALUES CURRENT DATE;--2016/1/6 --獲取時間 VALUES TIME(CURRENT TIMESTAMP);--16:40:40 VALUES CURRENT TIME;--16:40:40 --獲取時間戳 VALUES TIMESTAMP(CURRENT TIMESTAMP);--2016/1/6 16:40:40 VALUES CURRENT TIMESTAMP;--2016/1/6 16:40:40 VALUES sysdate;--2016/1/6 16:40:40 --獲取當前年份 values year(current timestamp);--2016 --獲取當前月 values month(current timestamp);--1 --獲取當前日 values day(current timestamp);--6 --獲取當前時 values hour(current timestamp);--16 --獲取分鍾 values minute(current timestamp);--40 --獲取秒 values second(current timestamp);--40 --獲取毫秒 values microsecond(current timestamp); --415269
2、DB2時間可以直接加減帶單位的時間長度。
VALUES TIMESTAMP('2016-1-06 12:18:12')+1 YEAR;--2017/1/6 12:18:12 VALUES TIMESTAMP('2016-1-06 12:18:12')+1 MONTH;--2016/2/6 12:18:12 VALUES TIMESTAMP('2016-1-06 12:18:12')+1 DAY;--2016/1/7 12:18:12 VALUES TIMESTAMP('2016-1-06 12:18:12')+1 HOUR;--2016/1/6 13:18:12 VALUES TIMESTAMP('2016-1-06 12:18:12')+1 MINUTE;--2016/1/6 12:19:12 VALUES TIMESTAMP('2016-1-06 12:18:12')+1 SECOND;--2016/1/6 12:18:13 VALUES TIMESTAMP('2016-1-06 12:18:12')+1 YEAR+1 MONTH+1 DAY+1 HOUR+1 MINUTE +1 SECOND ;--2017/2/7 13:19:13 VALUES TIMESTAMP('2016-1-06 12:18:12')-1 YEAR-1 MONTH-1 DAY-1 HOUR-1 MINUTE -1 SECOND ;--2014/12/5 11:17:11
3、通過days()可以獲取兩個時間相差天數。
VALUES DAYS(CURRENT DATE)-DAYS(CURRENT DATE-1000 DAY);--1000
4、通函數可以獲取時間對應的周(月)。
--DAYNAME()返回指定日期的星期名,該星期名是由首字符大寫、其他字符小寫組成的英文名。 values DAYNAME(current timestamp);--Wednesday(當天為星期五) --DAYOFWEEK()返回參數中的星期幾,用范圍在 1-7 的整數值表示,其中 1 代表星期日。 values DAYOFWEEK(current timestamp);--4(當天為星期三) --DAYOFWEEK_ISO()返回參數中的星期幾,用范圍在 1-7 的整數值表示,其中 1 代表星期一。 values DAYOFWEEK_ISO(current timestamp);--3(當前為星期三) --DAYOFYEAR()返回參數中一年中的第幾天,用范圍在 1-366 的整數值表示。 values DAYOFYEAR(current timestamp);--6 --MONTHNAME()對於參數的月部分的月份,返回一個大小寫混合的字符串(例如,January)。 values MONTHNAME(CURRENT TIMESTAMP);--January(當前為一月) --WEEK()返回參數中一年的第幾周,用范圍在 1-54 的整數值表示。以星期日作為一周的開始。(參數可以為日期格式或者日期格式的字符串) VALUES WEEK('2016-01-02');--1 VALUES WEEK('2016-01-03');--2 --WEEK_ISO()返回參數中一年的第幾周,用范圍在 1-54 的整數值表示。以星期一作為一周的開始。(參數可以為日期格式或者日期格式的字符串) VALUES WEEK_ISO('2016-01-02');--53 VALUES WEEK_ISO('2016-01-03');--53 VALUES WEEK_ISO('2016-01-04');--1
5、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('2016-01-06 12:23:24')-TIMESTAMP('2016-01-06 12:20:24'))); --180秒 VALUES TIMESTAMPDIFF(4,CHAR(TIMESTAMP('2016-01-06 12:23:24')-TIMESTAMP('2016-01-06 10:20:22'))); --123分鍾 VALUES TIMESTAMPDIFF(8,CHAR(TIMESTAMP('2016-01-06 12:23:24')-TIMESTAMP('2016-01-06 10:20:22'))); --2小時 VALUES TIMESTAMPDIFF(16,CHAR(TIMESTAMP('2016-01-07 12:23:24')-TIMESTAMP('2016-01-06 15:20:22'))); --0天 VALUES TIMESTAMPDIFF(16,CHAR(TIMESTAMP('2016-01-07 12:23:24')-TIMESTAMP('2016-01-06 10:20:22'))); --1天 VALUES TIMESTAMPDIFF(32,CHAR(TIMESTAMP('2016-03-06 12:23:24')-TIMESTAMP('2016-01-06 10:20:22'))); --8周 VALUES TIMESTAMPDIFF(64,CHAR(TIMESTAMP('2016-03-06 12:23:24')-TIMESTAMP('2016-01-06 10:20:22'))); --2月 VALUES TIMESTAMPDIFF(128,CHAR(TIMESTAMP('2016-05-06 10:20:22')-TIMESTAMP('2016-02-06 10:20:22'))); --1季度 VALUES TIMESTAMPDIFF(256,CHAR(TIMESTAMP('2017-01-06 10:20:22')-TIMESTAMP('2016-01-06 10:20:22'))); --1年