- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章日期和时间的存储与处理
本章内容包括:
●?????? 处理并存储一个特定的日期和时间,二者合起来称为时间值(datetime)。例如,2005年10月10日下午7:15:30就是一个时间值。时间值可以使用DATE类型存储。DATE类型可以存储世纪、4位年份、月、日、时(以24小时的格式)、分和秒。
●?????? 使用时间戳(timestamp),时间戳可以存储一个特定的日期和时间。一个时间戳可以存储世纪、4位年份、月、日、小时(以24小时格式)、分和秒。与DATE相比,时间戳的优点是可以存储带有小数位的秒,还可以存储时区。
●?????? 使用时间间隔(interval),时间间隔可以存储时间的长度,如1年零3个月就是一个时间间隔。
下面开始深入介绍这些方面的知识,同时展示一些存储和检索日期的简单例子。
5.1? 几个简单的存储和检索日期的例子
默认情况下,日期以DD-MON-YYYY格式保存到数据库中,其中:
●?????? DD是一个两位的天数,例如05。
●?????? MON是月份中的前三个字母,例如FEB。
●?????? YYYY是一个4位的年份,例如1968。
下面来看一个例子:customers表包含了一个DATE类型的列dob,本例向该表中添加一行记录。下面这个INSERT语句向customers表添加一行,并将该行的dob列设置为05-FEB-1968:
INSERT INTO customers (
customer_id, first_name, last_name, dob, phone
) VALUES (
6, Fred, Brown, 05-FEB-1968, 800-555-1215
);
还可以使用DATE关键字向数据库提供一个日期字面量,此时日期必须使用ANSI标准日期格式YYYY-MM-DD,其中:
●?????? YYYY是一个4位的年份。
●?????? MM是一个2位的月份,值为1~12。
●?????? DD是一个2位的天数。
提示:
在SQL语句中使用ANSI标准日期格式的优点是这些语句也可以在非Oracle数据库上运行。 例如,要指定日期为1972年10月25日,可以使用DATE 1972-10-25。下面这个INSERT语句向customers表中添加一行,并指定dob列的值为DATE 1972-10-25:
INSERT INTO customers (
customer_id, first_name, last_name, dob, phone
) VALUES (
7, Steve, Purple, DATE 1972-10-25, 800-555-1215
);
默认情况下,数据库以DD-MON-YY格式返回日期,其中YY是年份的最后两位。例如,下面这个查询对customers表进行检索,然后执行一个ROLLBACK命令取消刚才两个INSERT语句对数据库所做的操作;注意查询返回的结果中dob列显示的是两位年份:
SELECT *
FROM customers;
CUSTOMER_ID FIRST_NAME? LAST_NAME DOB ??????? PHONE
----------- ---------- ---------- --------- ------------
1? John??????? Brown ???? 01-JAN-65? 800-555-1211
2? Cynthia ???? Green ???? 05-FEB-68? 800-555-1212
3 Steve?????? White????? 16-MAR-71? 800-555-1213
4 Gail??? ??? Black???????????????? 800-555-1214
5 Doreen ??????Blue?????? 20-MAY-70
6 Fred??????? Brown????? 05-FEB-68? 800-555-1215
7 Steve ????? Purple???? 25-OCT-72? 800-555-1215
ROLLBACK;
由于顾客#4的dob列为null,因此在上面的输出结果中显示为空。
注意:
如果要实际运行上面给出的这两个INSERT语句,一定要执行ROLLBACK语句取消对数据库所做的修改。这样可以使数据库保持最初的状态,查询结果就能与本章给出的查询结果相同。 本节给出了几个使用默认格式日期的例子;下一节将会介绍如何指定自定义的日期格式,以及如何将时间值从一种类型转换为另外一种类型。
5.2? 使用TO_CHAR()和TO_DATE()转换时间值
Oracle数据库有一些函数可以将一个值从一种数据类型转换为另一种数据类型;第4章已经介绍了一些这
文档评论(0)