db2實現兩個數相減 DB2 日期相減 學步園

2021-10-17 05:05:24 字數 3279 閱讀 7302

這篇短文是為那些剛接觸db2並想理解如何操作日期和時間的新手而寫的。使用過其它資料庫的大部分人都會很驚喜地發現在db2中操作日期和時間是多麼簡單。要使用 sql 獲得當前的日期、時間及時間戳記,請參考適當的db2暫存器:select current date from sysibm.sysdummy1select current time from sysibm.sysdummy1select current timestamp from sysibm.sysdummy1sysibm.sysdummy1 表是乙個特殊的記憶體中的表,用它可以發現如上面演示的db2暫存器的值。您也可以使用關鍵字

values 來對暫存器或表示式求值。例如,在db2命令列處理器(command

line processor,clp)上,以下 sql 語句揭示了類似資訊:values current datevalues current timevalues current timestamp在餘下的示例中,我將只提供函式或表示式,而不再重複 select ... from sysibm.sysdummy1 或使用 values 子句。要使當前時間或當前時間戳記調整到 gmt/cut,則把當前的時間或時間戳記減去當前時區暫存器:current time - current timezonecurrent timestamp - current timezone給定了日期、時間或時間戳記,則使用適當的函式可以單獨抽取出(如果適用的話)年、月、日、時、分、秒及微秒各部分:year (current timestamp)month (current timestamp)day (current timestamp)hour (current timestamp)minute (current timestamp)second (current timestamp)microsecond (current timestamp)從時間戳記單獨抽取出日期和時間也非常簡單:date (current timestamp)time (current timestamp)因為沒有更好的術語,所以您還可以使用英語來執行日期和時間計算:current date + 1 yearcurrent date + 3 years + 2 months + 15 dayscurrent time + 5 hours - 3 minutes + 10 seconds要計算兩個日期之間的天數,您可以對日期作減法,如下所示:days (current date) - days (date('1999-10-22'))而以下示例描述了如何獲得微秒部分歸零的當前時間戳記:current timestamp - microsecond (current timestamp) microseconds如果想將日期或時間值與其它文字相銜接,那麼需要先將該值轉換成字串。為此,只要使用 char() 函式:char(current date)char(current time)char(current date + 12 hours)要將字串轉換成日期或時間值,可以使用:timestamp ('2002-10-20-12.00.00.000000')timestamp ('2002-10-20 12:00:00')date ('2002-10-20')date ('10/20/2002')time ('12:00:00')time ('12.00.00')timestamp()、date() 和 time() 函式接受更多種格式。上面幾種格式只是示例,我將把它作為乙個練習,讓讀者自己去發現其它格式。有時,您需要知道兩個時間戳記之間的時差。為此,db2提供了乙個名為

timestampdiff() 的內建函式。但該函式返回的是近似值,因為它不考慮閏年,而且假設每個月只有 30 天。以下示例描述了如何得到兩個日期的近似時差:timestampdiff (;, char(timestamp('2002-11-30-00.00.00')-timestamp('2002-11-08-00.00.00')))對於 ;,可以使用以下各值來替代,以指出結果的時間單位:1 = 秒的小數部分2 = 秒4 = 分8 = 時16 = 天32 = 周64 = 月128 = 季度256 = 年當日期很接近時使用 timestampdiff() 比日期相差很大時精確。如果需要進行更精確的計算,可以使用以下方法來確定時差(按秒計):(days(t1) - days(t2)) * 86400 +(midnight_seconds(t1) - midnight_seconds(t2))為方便起見,還可以對上面的方法建立 sql 使用者定義的函式:create function secondsdiff(t1 timestamp, t2 timestamp)returns intreturn ((days(t1) - days(t2)) * 86400 +(midnight_seconds(t1) - midnight_seconds(t2)))@如果需要確定給定年份是否是閏年,以下是乙個很有用的 sql 函式,您可以建立它來確定給定年份的天數:create function daysinyear(yr int)returns intreturn (case (mod(yr, 400)) when 0 then 366 elsecase (mod(yr, 4))   when 0 thencase (mod(yr, 100)) when 0 then 365 else 366 endelse 365 endend)@最後,以下是一張用於日期操作的內建函式表。它旨在幫助您快速確定可能滿足您要求的函式,但未提供完整的參考。有關這些函式的更多資訊,請參考 sql 參考大全。sql 日期和時間函式dayname 返回乙個大小寫混合的字串,對於引數的日部分,用星期表示這一天的名稱(例如,friday)。dayofweek 返回引數中的星期幾,用範圍在 1-7 的整數值表示,其中 1 代表星期日。dayofweek_iso 返回引數中的星期幾,用範圍在 1-7 的整數值表示,其中 1 代表星期一。dayofyear 返回引數中一年中的第幾天,用範圍在 1-366 的整數值表示。days 返回日期的整數表示。julian_day 返回從西元前 4712 年 1 月 1 日(儒略日曆的開始日期)到引數中指定日期值之間的天數,用整數值表示。midnight_seconds 返回午夜和引數中指定的時間值之間的秒數,用範圍在 0 到 86400 之間的整數值表示。monthname 對於引數的月部分的月份,返回乙個大小寫混合的字串(例如,january)。timestamp_iso 根據日期、時間或時間戳記引數而返回乙個時間戳記值。timestamp_format 從已使用字元模板解釋的字串返回時間戳記。timestampdiff 根據兩個時間戳記之間的時差,返回由第乙個引數定義的型別表示的估計時差。to_char 返回已用字元模板進行格式化的時間戳記的字元表示。to_char 是 varchar_format 的同義詞。to_date 從已使用字元模板解釋過的字串返回時間戳記。to_date 是 timestamp_format 的同義詞。week 返回引數中一年的第幾周,用範圍在 1-54 的整數值表示。以星期日作為一周的開始。week_iso 返回引數中一年的第幾周,用範圍在 1-53 的整數值表示。

DB2 日期時間函式

select current date from sysibm.sysdummy1 select current time from sysibm.sysdummy1 select current timestamp from sysibm.sysdummy1 sysibm.sysdummy1 表是...

DB2 日期時間函式

select current date from sysibm.sysdummy1 select current time from sysibm.sysdummy1 select current timestamp from sysibm.sysdummy1 sysibm.sysdummy1 表是...

db2日期操作函式

current date current time current timestamp 獲取時間的年 月 日 時 分 秒及微秒各部分 year current timestamp month current timestamp day current timestamp hour current t...