成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2 基礎日期日期與時間的使用,初始篇

數據庫
我們今天主要向大家講述的是DB2 數據庫并想理解如何操作DB2 基礎日期日期與時間的使用,以下就是文章的主要內容的詳細描述。

此文章主要是為那對 DB2 數據庫并想理解如何操作DB2 基礎日期日期與時間的使用剛接觸的新手而寫。使用過其它數據庫的大部分人都會很驚喜地發現在 DB2 數據庫中操作日期和時間是多么簡單。

基礎

要使用 SQL 獲得當前的DB2 基礎日期日期、時間及時間戳記,請參考適當的 DB2 寄存器:

  1. SELECT current date FROM sysibm.sysdummy1  
  2. SELECT current time FROM sysibm.sysdummy1  
  3. SELECT current timestamp FROM sysibm.sysdummy1 

sysibm.sysdummy1 表是一個特殊的內存中的表,用它可以發現如上面演示的 DB2 寄存器的值。您也可以使用關鍵字 VALUES 來對寄存器或表達式求值。例如,在 DB2 命令行處理器(Command Line Processor,CLP)上,以下 SQL 語句揭示了類似信息:

 

  1. VALUES current date  
  2. VALUES current time  
  3. VALUES current timestamp 

在余下的示例中,我將只提供函數或表達式,而不再重復 SELECT ... FROM sysibm.sysdummy1 或使用 VALUES 子句。

 

要使當前時間或當前時間戳記調整到 GMT/CUT,則把當前的時間或時間戳記減去當前時區寄存器:

  1. current time - current timezone  
  2. current timestamp - current timezone 

給定了日期、時間或時間戳記,則使用適當的函數可以單獨抽取出(如果適用的話)年、月、日、時、分、秒及微秒各部分:

 

  1. YEAR (current timestamp)  
  2. MONTH (current timestamp)  
  3. DAY (current timestamp)  
  4. HOUR (current timestamp)  
  5. MINUTE (current timestamp)  
  6. SECOND (current timestamp)  
  7. MICROSECOND (current timestamp) 

從時間戳記單獨抽取出DB2 基礎日期日期和時間也非常簡單:

 

  1. DATE (current timestamp)  
  2. TIME (current timestamp) 

因為沒有更好的術語,所以您還可以使用英語來執行日期和時間計算:

 

  1. current date + 1 YEAR  
  2. current date + 3 YEARS + 2 MONTHS + 15 DAYS  
  3. current time + 5 HOURS - 3 MINUTES + 10 SECONDS  

要計算兩個日期之間的天數,您可以對日期作減法,如下所示:

  1. days (current date) - days (date('1999-10-22')) 

而以下示例描述了如何獲得微秒部分歸零的當前時間戳記:

 

  1. CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS 

如果想將日期或時間值與其它文本相銜接,那么需要先將該值轉換成字符串。為此,只要使用 CHAR() 函數:

 

  1. char(current date)  
  2. char(current time)  
  3. char(current date + 12 hours) 

要將字符串轉換成DB2 基礎日期日期或時間值,可以使用:

 

  1. TIMESTAMP ('2002-10-20-12.00.00.000000')  
  2. TIMESTAMP ('2002-10-20 12:00:00')  
  3. DATE ('2002-10-20')  
  4. DATE ('10/20/2002')  
  5. TIME ('12:00:00')  
  6. TIME ('12.00.00') 

TIMESTAMP()、DATE() 和 TIME() 函數接受更多種格式。上面幾種格式只是示例,我將把它作為一個練習,讓讀者自己去發現其它格式。

 

警告:

摘自 DB2 UDB V8.1 SQL Cookbook,作者 Graeme Birchall (see http://ourworld.compuserve.com/homepages/Graeme_Birchall).

 

如果你在日期函數中偶然地遺漏了引號,那將如何呢?結論是函數會工作,但結果會出錯:

  1. SELECT DATE(2001-09-22) FROM SYSIBM.SYSDUMMY1; 

結果:

 

  1. 05/24/0006 

為什么會產生將近 2000 年的差距呢?當 DATE 函數得到了一個字符串作為輸入參數的時候,它會假定這是一個有效的 DB2 基礎日期日期的表示,并對其進行適當地轉換。相反,當輸入參數是數字類型時,函數會假定該參數值減 1 等于距離公元***天(0001-01-01)的天數。在上面的例子中,我們的輸入是 2001-09-22,被理解為 (2001-9)-22, 等于 1970 天,于是該函數被理解為 DATE(1970)。 #p#

日期函數

有時,您需要知道兩個時間戳記之間的時差。為此,DB2 提供了一個名為 TIMESTAMPDIFF() 的內置函數。但該函數返回的是近似值,因為它不考慮閏年,而且假設每個月只有 30 天。以下示例描述了如何得到兩個日期的近似時差:

  1. timestampdiff (<n>, char(  
  2. timestamp('2002-11-30-00.00.00')-  
  3. timestamp('2002-11-08-00.00.00')))  

對于 <n>,可以使用以下各值來替代,以指出結果的時間單位:

1 = 秒的小數部分

2 = 秒

 

4 = 分

 

8 = 時

 

16 = 天

 

32 = 周

 

64 = 月

 

128 = 季度

 

256 = 年

 

當日期很接近時使用 timestampdiff() 比DB2 基礎日期日期相差很大時精確。如果需要進行更精確的計算,可以使用以下方法來確定時差(按秒計):

 

  1. (DAYS(t1) - DAYS(t2)) * 86400 +   
  2. (MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2)) 

為方便起見,還可以對上面的方法創建 SQL 用戶定義的函數:

 

  1. CREATE FUNCTION secondsdiff(t1 TIMESTAMP, t2 TIMESTAMP)  
  2. RETURNS INT  
  3. RETURN (  
  4. (DAYS(t1) - DAYS(t2)) * 86400 +   
  5. (MIDNIGHT_SECONDS(t1) - MIDNIGHT_SECONDS(t2))  
  6. )  

如果需要確定給定年份是否是閏年,以下是一個很有用的 SQL 函數,您可以創建它來確定給定年份的天數:

 

  1. CREATE FUNCTION daysinyear(yr INT)  
  2. RETURNS INT  
  3. RETURN (CASE (mod(yr, 400)) WHEN 0 THEN 366 ELSE   
  4. CASE (mod(yr, 4)) WHEN 0 THEN   
  5. CASE (mod(yr, 100)) WHEN 0 THEN 365 ELSE 366 END   
  6. ELSE 365 END  
  7. END)@ 

以上的相關內容就是對DB2 基礎之日期和時間的使用的介紹,望你能有所收獲。

【編輯推薦】

  1. 對DB2 Online備份方案的具體描述
  2. DB2數據庫備份與恢復命令的總結描述
  3. 備份恢復DB2數據庫的3步驟,好用!
  4. Oracle移植到DB2數據庫中常出現的錯誤有哪些?
  5. 3種DB2數據遷移的操作方案與其的缺點與注意事項

 

責任編輯:佚名 來源: 東方早報
相關推薦

2010-08-10 17:39:52

DB2 基礎

2010-08-25 13:46:00

DB2函數日期

2010-11-04 14:57:35

DB2日期時間

2010-11-04 15:20:33

DB2日期函數

2010-08-11 08:39:57

DB2 數據庫

2010-11-04 15:30:29

客戶化DB2日期

2010-08-05 09:41:03

DB2常用函數

2011-05-17 10:17:57

DB2日期時間函數

2010-11-01 14:26:12

DB2日期時間型數據類

2009-05-06 15:14:18

DB2日期時間

2010-11-04 15:26:44

DB2日期格式

2011-03-11 16:13:37

IBM DB2數據庫日期操作函數

2010-11-02 14:53:38

DB2權限

2010-09-30 16:00:40

DB2動態SQL

2010-08-10 15:42:31

DB2 back 存檔

2010-09-30 13:27:09

DB2游標

2010-08-11 09:14:33

DB2數據類型

2010-08-03 11:33:30

DB2并置

2010-08-25 14:46:53

DB2PostgreSQL開發

2010-08-10 15:30:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费一级黄色 | 成人在线免费视频观看 | 国产999精品久久久影片官网 | 999热在线视频 | 国产欧美一区二区三区久久人妖 | 久久手机视频 | 99爱在线观看 | 色婷婷综合久久久久中文一区二区 | 日韩三级电影一区二区 | 久久毛片 | 日日夜夜免费精品视频 | 日韩欧美视频在线 | 亚洲欧美日韩国产 | 久久精品69 | 草草草网站 | 精品九九九 | 成人3d动漫一区二区三区91 | 久久精品国产久精国产 | 久草热8精品视频在线观看 午夜伦4480yy私人影院 | 99久久久久久 | 又黑又粗又长的欧美一区 | av中文字幕在线播放 | 国产一区二区精 | 成人精品一区 | 6996成人影院网在线播放 | 日韩中文字幕在线观看 | 黄色毛片网站在线观看 | 日韩av在线免费 | 精品三级在线观看 | 亚洲精品二区 | 97久久超碰| 中文天堂在线一区 | 国产精品日本一区二区在线播放 | 中文字幕精品一区二区三区精品 | 99精品亚洲国产精品久久不卡 | 日韩插插 | 国产偷久久一级精品60部 | 国产精品观看 | 久久99精品视频 | 久草成人 | 婷婷久久五月 |