WEB开发网
开发学院数据库DB2 DB2中有关日期和时间的函数,及应用 阅读

DB2中有关日期和时间的函数,及应用

 2008-10-07 16:30:34 来源:WEB开发网   
核心提示: 有时,您需要知道两个时间戳记之间的时差,DB2中有关日期和时间的函数,及应用(3),为此,DB2提供了一个名为TIMESTAMPDIFF()的内置函数,可以使用以下方法来确定时差(按秒计):(DAYS(t1)-DAYS(t2))*86400+(MIDNIGHT_SECONDS(t1)-MI

有时,您需要知道两个时间戳记之间的时差。为此,DB2提供了一个名为TIMESTAMPDIFF()的内置函数。但该函数返回的是近似值,因为它不考虑闰年,而且假设每个月只有30天。以下示例描述了如何得到两个日期的近似时差: 

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

对于<n>,可以使用以下各值来替代,以指出结果的时间单位: 

1=秒的小数部分 

2=秒 

4=分 

8=时 

16=天 

32=周 

64=月 

128=季度 

256=年 

当日期很接近时使用timestampdiff()比日期相差很大时精确。如果需要进行更精确的计算,可以使用以下方法来确定时差(按秒计): 

(DAYS(t1)-DAYS(t2))*86400+  

(MIDNIGHT_SECONDS(t1)-MIDNIGHT_SECONDS(t2)) 

为方便起见,还可以对上面的方法创建SQL用户定义的函数: 

CREATEFUNCTIONsecondsdiff(t1TIMESTAMP,t2TIMESTAMP) 
RETURNSINT 
RETURN( 
(DAYS(t1)-DAYS(t2))*86400+  
(MIDNIGHT_SECONDS(t1)-MIDNIGHT_SECONDS(t2)) 
) 
@ 

如果需要确定给定年份是否是闰年,以下是一个很有用的SQL函数,您可以创建它来确定给定年份的天数: 


CREATEFUNCTIONdaysinyear(yrINT) 
RETURNSINT 
RETURN(CASE(mod(yr,400))WHEN0THEN366ELSE 
    CASE(mod(yr,4)) WHEN0THEN 
    CASE(mod(yr,100))WHEN0THEN365ELSE366END 
    ELSE365END 
END)@ 

上一页  1 2 3 4  下一页

Tags:DB 有关 日期

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接