《日期和时间的存储与处理.ppt》由会员分享,可在线阅读,更多相关《日期和时间的存储与处理.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、日期和时间的存储与处理上面的日期的格式是DD-MON-YY日期在数据库里面的存储是固定格式的,不会随着你的参数的改变而改变。这个参数影响主要在两个方面:1、输入时如何确认你的输入字符串的日期格式2、输出时如何显示你的输出日期格式使用sysdate测试一下当前数据库的日期格式。使用DATE以后,后面的格式必须使用ANSI标准格式:YYYY-MON-DD使用TO_CHAR()和TO_DATE()转换函数TO_CHAR(x,format)TO_DATE(x,format)TO_CHAR(x,format)将时间值转换为字符串(前面已经讲过将数字转换为字符串)MONTH是大写的月份的全称。使用TO_D
2、ATE()将字符串转换为日期格式按照我们指定的格式来识别字符串为日期格式,然后按照默认的日期格式进行输出。组合使用to_char和to_date函数。设置默认的日期格式前面我们已经演示了如何修改NLS_DATE_FORMAT参数,同时也演示了如何修改SESSION的NLS_DATE_FORMAT参数。Oracle对YY格式的解释如果格式采用的是YY,那么oracle就采用数据库服务器当前的世纪来填充这个YY的世纪。例如目前数据库服务器的时间是2009,那么YY 75就表示2075(有可能本意是1975),因此建议还是采用YYYY的格式。使用时间值函数ADD_MONTHS()函数ADD_MONT
3、HS(x,y)函数用于计算x加上y个月的结果,如果y是负数,那么表示减去y个月。LAST_DAY函数用于计算包含x的月的最后一天。MONTHS_BETWEEN()NEXT_DAY(x,day)函数这个函数返回从x开始下一个day的日期。ROUND(x,unit)函数用于对x进行取整,默认情况下x取整为最近的一天。YYYY表示为取整为最近一年的第一天。如果是以YYYY来进行round,那么就看月份,如果月份是下半年,那么就取整到下一年。如果是以MM来进行round,那么就看日期,如果日期是上半月,那么就取整到这个月。如果说是以HH24来进行取整,那么就看分钟数,取整到最近的小时。总是取整到最近的
4、时间点。TRUNC()函数ROUND总是取整到最近的年份、月份、日期、小时等TRUNC总是裁断到本年、本月、本日等等两者都是到开始时间。理解时区Oracle 9i引入了一种新的特性,可以表示不同的时区。时区是当地时间与英格兰格林威治时间的时差,格林威治时间过去称为GMT,现在称为UTC。时区可以使用时差来表示,也可以使用名字来表示。时差的表示采用+|-HH:MI.例如:-07:00、+02:15使用时区名表示,例如:PST(太平洋标准时间)、UTC(东部标准时间)数据库时区和会话时区访问的数据库所在的时区可能与本地时区不同:分被称为数据库时区和会话时区。数据库时区默认情况下数据库时区等于会话时
5、区。会话时区覆盖数据库时区。查看会话时区中的当前时间:连接的是同一个数据库,但是会话时区不同。查看不同时区相对格林威治的时区差。获取时区名。将一个时间值从PST转换到EST。EST比PST早3个小时。使用时间戳Oracle 9i中引入了时间戳的概念。时间戳可以存储世纪、4位年、月、日、时(24小时制)、分、秒时间戳的特点:1、可以存储秒的小数位2、可以存储时区1、TIMESTAMP(seconds_precision)时间戳存储世纪、4位年、月、日、时(24小时制)、分、秒seconds_precision为可选参数,从0-9,默认值是6,表示秒的小数点右边可以存储6位数字。如果超出这个精度,
6、该小数将被取整。2、TIMESTAMP(seconds_precision)WITH TIME ZONE扩展了TIMESTAMP,用于存储时区。3、TIMESTAMP(seconds_precision)WITH LOCAL TIME ZONE扩展了TIMESTAMP,将给定的时间值转换为数据库的本地时区。这个表记录了客户购买记录,其中made_on就是一个TIMESTAMP的列。INSERT INTO purchases_with_timestamp values(1,1,TIMESTAMP 2005-05-13 07:15:31.1234);TIMESTAMP关键字和前面的DATE类似,后
7、面的时间格式必须符合ANSI标准YYYY-MON-DD HH24:MI:SS.SSSSSSSSSTIMESTAMP 2005-05-13 07:15:31-07:00或者TIMESTAMP 2005-05-13 07:15:31 PST插入数据时带时区,显示的时候也照样需要带时区。TIMESTAMP WITH LOCAL TIME ZONE存储的时间被转换为了数据库的本地时区时间戳。显示的时候被显示为当前会话的时区设置。假设数据库的时区是PST(-7:00),向数据库中存储下面的时间戳:2005-05-13 07:15:30 EST由于EST比UTC晚4个小时,因此EST与PST之间差3个时区
8、,从时间戳中减去3个小时。2005-05-13 04:15:30假设当前的会话时区就是PST如果当前的会话时区是EST,那么这个时间就是041、当前会话的时间和会话时区timestamp with time zone类型2、当前会话时区的当前时间timestamp3、数据库的当前时间和市区 timestamp with time zone类型 extract从x中提取年、月、日、时、分、秒、时区。TO_TIMESTAMP(x,format)用于将字符串x转换为一个TIMESTAMP类型。使用时间间隔Oracle 9i引入了一种新的特性,可以用来存储时间间隔(time interval),时间间
9、隔的例子包括:1、1年零3个月2、25个月3、-3天5小时16分4、1天7小时5、-56小时INTERVAL YEAR TO MONTH类型用来存储单位为年和月的时间间隔。INTERVAL+|-y-m YEAR(years_precision)TO MONTHINTERVAL 1 YEAR -时间间隔为1年INTERVAL 11 MONTH-时间间隔为11个月INTERVAL 14 MONTH-时间间隔为14个月INTERVAL 1-3 YEAR TO MONTH -时间间隔为1年零3个月INTERVAL 0-5 YEAR TO MONTH -时间间隔为0年5个月INTERVAL 123 YE
10、AR(3)TO MONTH -时间间隔为123年,精度为3INTERVAL-1-5 YEAR TO MONTH -时间间隔为负数,值为1年零5个月INTERVAL 1234 YEAR-时间间隔无效,精度最多包含3位数字INSERT INTO coupons values(1,$1 off Z Files,INTERVAL 1 YEAR);INTERVAL DAY TO SECONDS类型 可以存储单位为天和秒的时间间隔INTERVAL 3 DAY-时间间隔为3天INTERVAL 2 HOUR-时间间隔为2个小时INTERVAL 25 MINUTE-时间间隔为25分钟INTERVAL 45 SE
11、COND-时间间隔为45秒INTERVAL 3 2 DAY TO HOUR -时间间隔为3天零2小时INTERVAL 3 2:25 DAY TO MONUTE-时间间隔为3天零2小时25分钟INTERVAL 3 2:25:45 DAY TO SECOND -时间间隔为3天零2小时25分45秒INTERVAL 123 2:25:45.12 DAY(3)TO SECOND(2)-时间间隔为123天零2小时25分45.12秒INTERVAL 3 2:00:45 DAY TO SECOND-时间间隔为3天2小时45秒INTERVAL-3 2:25:45 DAY TO SECOND-时间间隔为负数INTERVAL 1234 2:25:45 DAY(3)TO SECOND-无效时间间隔INTERVAL 123 2:25:45.123 DAY TO SECOND(2)无效时间间隔INSERT INTO coupons values(1,10%off Z Files,INTERVAL 3 YEAR);将一个数字转换为 INTERVAL DAY TO SECOND类型。