搜档网
当前位置:搜档网 › DB2 日期函数计算日期差

DB2 日期函数计算日期差

DB2 日期函数计算日期差
DB2 日期函数计算日期差

DB2 日期函数计算日期差

2012-11-07 22:19:50| 分类:DB2知识|举报|字号订阅

1.获得当前时间与someday的日期差值。

SELECT days(current date) - days(someday)

select days(current timestamp) - days(‘2012-02-03 12:01:02.236000’)

2.DayofWeek 返回参数中的星期几,用范围1--7表示,其中1代表星期日

3.DayofWeek_ISO返回参数中的星期几,用范围1--7表示,其中1代表星期一

--取日期

SELECT CURRENT DATE FROM sysibm.sysdummy1;

--返回数据类型:DATE

--结果集(YYYY-MM-DD):2005-12-22

--取时间

SELECT CURRENT TIME FROM sysibm.sysdummy1;

--返回数据类型:TIME

--结果集(HH-MM-SS):10:10:21

--取时间戳记

SELECT CURRENT TIMESTAMP FROM sysibm.sysdummy1;

--返回数据类型:TIMESTAMP

--结果集(YYYY-MM-DD HH-MM-SS XXXXXX): 2005-12-22 10:10:22 187002

说明:sysibm.sysdummy1表是一个特殊的内存中的表,专门用于存储系统日期和时间。推荐大家使用VALUES 函数直接来进行操作。

以上的语句可以改写为:

--取日期

VALUES CURRENT DATE;

--取时间

VALUES CURRENT TIME;

--取时间戳记

VALUES CURRENT TIMESTAMP;

2、DB2中日期、时间的常用函数介绍

VALUES YEAR(CURRENT TIMESTAMP);

--返回值:2005

--取月份

VALUES MONTH(CURRENT TIMESTAMP);

--返回值:12

--取天

VALUES DAY(CURRENT TIMESTAMP);

--返回值:22

--取星期

VALUES DAYOFWEEK(CURRENT TIMESTAMP);

--返回值:5

--说明:取值范围为1-7,1代表星期日,所以今天是星期四,得出的值为5!

VALUES DAYNAME(CURRENT TIMESTAMP);

--返回值:星期五

--取小时

VALUES HOUR(CURRENT TIMESTAMP);

--返回值:10

--取分钟

VALUES MINUTE(CURRENT TIMESTAMP);

--返回值:27

--取秒

VALUES SECOND(CURRENT TIMESTAMP);

--返回值:08

--取毫秒

VALUES MICROSECOND(CURRENT TIMESTAMP);

--返回值:890001

说明:以上函数可以直接供大家在存储过程以及自定义函数或者触发器中直接调用,所有返回类型均为INTEGER

--取日期

VALUES DATE(CURRENT TIMESTAMP);

--返回数据类型:DATE

--返回值:2005-12-22

VALUES TIME(CURRENT TIMESTAMP);

--返回数据类型:TIME

--返回值:10:30:48

3、DB2中日期、时间的计算

--取明年的今天

VALUES CURRENT DATE + 1 YEAR;

--返回值:2006-12-12

--取前年的今天(两种写法都合法)

VALUES CURRENT DATE - 2 YEAR;

VALUES CURRENT DATE - 2 YEARS;

--返回值:2003-12-12

--取下一个小时后的时间

VALUES CURRENT TIME + 1 HOUR;

--返回值:11:38:25

--混合应用的示例1

VALUES CURRENT DATE + 2 YEARS - 1 MONTH + 10 DAYS;

--返回值:2007-12-2(笔者的当前日期为:2005-12-22,大家可以自己计算一下)

--混合应用的示例2

VALUES CURRENT TIME + 5 HOURS - 3 MINUTES + 10 SECONDS;

--返回值:15:39:22(笔者的当前时间为:10:42:12,大家可以自己计算一下)

--计算两个日期之间的间隔天数

VALUES DAYS(CURRENT DATE) - DAYS('2005-01-01');

--返回值:355

说明:DB2中日期、时间的计算非常的灵活,大家可以根据实际需求进行自己的计算4、DB2中日期、时间的类型转换

--将日期、时间类型转换为字符串型

VALUES CHAR(CURRENT DATE);

VALUES CHAR(CURRENT TIMESTAMP);

--将字符串型转换为日期、时间类型

VALUES TIMESTAMP ('2005-12-22-12.00.00.000000');

VALUES TIMESTAMP ('2005-12-22 12:00:00');

VALUES DATE ('2005-12-22');

VALUES DATE ('12/22/2005');--注意:该格式为(MM/DD/YYYY)

VALUES TIME ('12:00:00');

VALUES TIME ('12.00.00');

说明:在实际应用中,TIMESTAMP()、DATE() 和TIME() 函数接受更多种格式。其他的格式有兴趣的读者可以自己去发现。

--注意:DATE(2005-12-22)和DATE('2005-12-22')虽然都是合法的,但是结果不同!其实DATE(2005-12-22)等价与DATE(1971),具体原因这里就不详细讲述了。

VALUES DATE(2005-12-22)

--返回值:0006-5-25

VALUES DATE('2005-12-22')

--返回值:2005-12-22

5、DB2中日期、时间的补充说明

DAYNAME

返回一个大小写混合的字符串,对于参数的日部分,用星期表示这一天的名称(例如,星期四)。

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 的整数值表示。

相关主题