DB2日期及时间的使用
1、DB2中日期、时间寄存器的使用
--取日期 SELECT CURRENT DATE FROM sysibm.sysdummy1;
--返回数据类型:DATE
--结果集(YYYY-MM-DD): 2013-12-11
--取时间 SELECT CURRENT TIME FROM sysibm.sysdummy1;
--返回数据类型:TIME
--结果集(HH-MM-SS): 21:06:53
--取时间戳记 SELECT CURRENT TIMESTAMP FROM sysibm.sysdummy1;
--返回数据类型:TIMESTAMP
--结果集(YYYY-MM-DD HH-MM-SS XXXXXX): 2013-12-11-21.08.16.000072
说明:
sysibm.sysdummy1表是一个特殊的内存中的表,专门用于存储系统日期和时间。
推荐大家使用 VALUES 函数直接来进行操作。
以上的语句可以改写为:
--取日期 VALUES CURRENT DATE;
--取时间 VALUES CURRENT TIME;
--取时间戳记 VALUES CURRENT TIMESTAMP;
2、DB2中日期时间的常用函数
--取年份 VALUES YEAR(CURRENT TIMESTAMP);
--返回值:2013
--取月份 VALUES MONTH(CURRENT TIMESTAMP);
--返回值:12
--取天 VALUES DAY(CURRENT TIMESTAMP);
--返回值:11
--取星期 VALUES DAYOFWEEK(CURRENT TIMESTAMP);
--返回值:4
--说明:取值范围为1-7,1代表星期日,所以今天是星期三,得出的值为4!
--取星期 VALUES DAYNAME(CURRENT TIMESTAMP);
--返回值:星期三
--取小时 VALUES HOUR(CURRENT TIMESTAMP);
--返回值:21
--取分钟 VALUES MINUTE(CURRENT TIMESTAMP);
--返回值:15
--取秒 VALUES SECOND(CURRENT TIMESTAMP);
--返回值:25
--取毫秒 VALUES MICROSECOND(CURRENT TIMESTAMP);
--返回值:454287
说明:以上函数可以直接供大家在存储过程以及自定义函数或者触发器中直接调用,所有返回类型均为 INTEGER
--取日期 VALUES DATE(CURRENT TIMESTAMP);
--返回数据类型:DATE
--返回值:2013-12-11
--取时间 VALUES TIME(CURRENT TIMESTAMP);
--返回数据类型:TIME --返回值:21:14:34
3、DB2中日期、时间的计算
--取明年的今天 VALUES CURRENT DATE + 1 YEAR;
--返回值:2014-12-11
--取前年的今天(两种写法都合法) VALUES CURRENT DATE - 2 YEAR;VALUES CURRENT DATE - 2 YEARS;
--返回值:2011-12-11
--取下一个小时后的时间 VALUES CURRENT TIME + 1 HOUR;
--返回值:22:22:45
--混合应用的示例1: VALUES CURRENT DATE + 2 YEARS - 1 MONTH + 20 DAYS; --返回值:2015-12-01(笔者的当前日期为:2013-12-11,大家可以自己计算一下)
--混合应用的示例2: VALUES CURRENT TIME + 5 HOURS - 3 MINUTES + 10 SECONDS; --返回值:02:22:51(笔者的当前时间为:21:25:41,大家可以自己计算一下)
--计算两个日期之间的间隔天数 VALUES DAYS(CURRENT DATE) - DAYS('2013-01-01'); --返回值:344
说明:DB2中日期、时间的计算非常的灵活,大家可以根据实际需求进行自己的计算
4、 DB2中日期、时间的转换
--将日期、时间类型转换为字符串型
VALUES CHAR(CURRENT DATE);
VALUES CHAR(CURRENT TIMESTAMP);
-- 将字符串型转换为日期、时间类型
VALUES TIMESTAMP (' 2012-10-17 12.00.00.000000');
VALUES TIMESTAMP (' 2012-10-17 12:00:00');
VALUES DATE (' 2012-10-17');
VALUES DATE ('10/17/2012');
--注意:该格式为(MM/DD/YYYY)
VALUES TIME ('12:00:00');
VALUES TIME ('12.00.00');
说明:在实际应用中,TIMESTAMP()、DATE() 和 TIME() 函数接受更多种格式。其他的格式有兴趣的读者可以自己去发现。
--注意:DATE(2012-10-17)和DATE(' 2012-10-17')虽然都是合法的,但是结果不同!其实DATE(2012-10-17)等价与DATE(1985),具体原因这里就不详细讲述了。
VALUES DATE(2012-10-17) --返回值:0006/6/8
VALUES DATE('2012-10-17') --返回值:2012-10-17
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 的整数值表示。