/***********************************************************************
--IBM DB2学习笔记-1:日期以及时间的使用
--彭建军
--2005-12-22 9:56
--测试环境:DB2 UDB V8.2
--适用于 IBM DB2 UDB for Linux、UNIX 和 Windows
--说明:本文介绍了DB2日期以及时间的绝大部分应用
--欢迎转载,但请注明出处。
***********************************************************************/
首先要说的废话是:看完本文后大家会发现,DB2中的日期和时间处理非常简单也非常灵活!
本文中的语句都经过测试,大家可以在命令编辑器中执行以查看结果,笔者的结果集仅供参考。
1、DB2中日期、时间寄存器的使用
--取日期
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 的整数值表示。
说明:在DB2中,日期、时间的函数还有很多,上面只列举了一些常用的函数,如果这些函数不能实现读者的需求,可以自己编写自定义函数。
相信各位读者看完这篇文章之后会对DB2的时间以及日期计算有全新的认识,非常简单,没有骗你哦!
感谢IBM 工程师 Paul Yi,是您的文章让我获益匪浅。
分享到:
相关推荐
自己总结的关于 db2数据库当前日期和前一天日期的sql语句
这篇短文是为那些刚接触DB2 并想理解如何操作日期和时间的新手而写的。使用过其它数据库的 大部分人都会很惊喜地发现在DB2 中操作日期和时间是多么简单。
这篇短文是为那些刚接触 DB2 并想理解如何操作日期和时间的新手而写的。使用过其它数据库的大部分人都会很惊喜地发现在 DB2 中操作日期和时间是多么简单。
DB2 计算相差天数(时间),打个比方你要计算2013-10-20到2014-03-01的天数
DB2中有关日期和时间的函数,及应用,比较老的文章了,需要的朋友可以参考下。
DB2 基础:日期和时间的使用
这是一个db2日期处理相关的word。有具体的例子和一些函数等。
DB2各类函数的分类总汇文档 1. 聚合函数 2. 类型转换函数 3. 数学函数 4. 字符串函数 5. 日期时间函数 6. XML 函数 7. 分区函数 8. 安全函数 9. 其他
DB2内置数据类型可以分成数值型(numeric)、字符串型(character string)、图形字符串(graphic string)、二进制字符串型(binary string)或日期时间型(datetime)。还有一种叫做 DATALINK 的特殊数据类型。...
这是一个以Microsoft Access建立的MDB数据库,其中存储了2002、2003年每天的公历、农历日期,交节气时间,年、月、日、时干支,中外重要节日等信息。 通常情况下,由公历到农历日期的转换需要运用大量相关的数据...
这是本人近期做DB2相关的项目时,在网上搜集的一些资料,对于了解DB2数据库有不少帮助,现在上传提供给大家
Oracle中的DATE含有年、月、日、时、分、秒,它和DB2/400中的DATE不相互对应,DB2/400中的DATE只有年、月、日,TIME类型含有时、分、秒,因此日期和时间类型要进行转换
整理里常用数据库sql server,oracle,DB2等日期格式转换
拿去可以直接用的计算2个日期间相差天数,并过滤了节假日和周末。
DB2日期和时间的使用
求两个日期之间相差的月数或年数。例如,求第一个员工和最后一个员工聘用之间相差的月份数,以及这些月折合的年数。
只需阅读文档:http://msdn.microsoft.com/zh-cn/library/zdtaw1bw.aspx [^]它将打开您的眼睛:)
您可能感兴趣的文章:将WMI中的DateTime类型转换成VBS时间的函数代码LINQ字符串向datetime 转换时失败的处理方法时间字符串转换成日期对象datetime的方法Sql中将datetime转换成字符串的方法(CONVERT)Python中实现对...
2.1.4 日期时间类型 2.1.5 二进制类型 2.2 通过SQL语句管理数据表 2.2.1 创建数据表 2.2.2 定义非空约束 2.2.3 定义默认值 2.2.4 定义主键 2.2.5 定义外键 2.2.6 修改已有数据表 2.2.7 删除数据...