DB2日期和時間函數匯總


  上一篇提到過在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年

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM