本章内容包括:
创新互联是一家专注于网站建设、成都网站设计与策划设计,华阴网站建设哪家好?创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:华阴等地区。华阴做网站价格咨询:028-86922220处理并存储一个特定的日期和时间。DATE类型可以存储世纪、4位年份、月、日、时、分和秒
使用时间戳timestamp,时间戳可以存储一个特定的日期和时间。时间戳的优点是可以存储带有小数位的秒,还可以存储时区
使用时间间隔interval,时间间隔可以存储时间的长度。如1年零3个月等。
在Oracle数据库中,默认情况下,日期以DD-MON-YYYY格式保存到数据库中,其中:
DD是一个两位的天数
MON是月份中的前三个字母,如FEB
YYYY是一个4位的年份。
默认情况下数据库以DD-MON-YY格式返回日期,其中YY是年份的最后两位。
1、使用TO_DATE()和TO_CHAR()转换时间值。
TO_CHAR(x[,format])用于将时间值x转化为字符串,该函数提供一个可选参数format来说明x的格式。
SQL> select sysdate from dual; SYSDATE ----------- 2016/6/9 12 SQL> select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual; TO_CHAR(SYSDATE,'YYYY-MM-DDHH2 ------------------------------ 2016-06-09 12:32:28 SQL> select to_char(sysdate) from dual; TO_CHAR(SYSDATE) ---------------- 09-6月 -16TO_DATE(x[,format])用于将字符串x转化为时间值,该函数可以指定一个可选字符串format参数来说明x的格式。如果没有指定format参数,日期就是用默认的数据库格式。x的格式要与format指定的格式一样。
SQL> select to_char(to_date('05-6月-2016 12:38:23','DD-MON-YYYY HH24:MI:SS'),'HH24:MI:SS') as time 2 from dual; TIME -------- 12:38:23设置默认的日期格式。默认的日期格式是在数据库参数NLS_DATE_FORMAT中指定的。可以用下面的语句来修改。
SQL> alter session set nls_date_format = 'YYYY-MM-DD'; Session altered2、使用时间值函数
时间值函数用于获取或处理时间值和时间戳。
函数 | 说明 |
ADD_MONTHS(x,y) | 返回x加上y个月后的结果,如果y是负数,就从x中减去y个月 |
LAST_DAY(x) | 返回包含x的月的最后一天 |
MONTHS_BETWEEN(x,y) | 返回x和y之间有几个月。如果x>y返回正数,否则返回负数。 |
NEXT_DAY(x,day) | 返回从x开始,到下个day的时间值;day是一个文本字符串 |
ROUND(x[,unit]) | 对x取整。 |
SYSDATE | 返回数据库服务器所在的操作系统中设置的当前时间值 |
TRUNC(x[,unit]) | 对x进行截断。默认情况下,x被截断为当天的开始时间。 |
3、使用时间戳
CURRENT_TIMESTAMP、LOCALTIMESTAMP、SYSTIMESTAMP返回当前回话的日期和时间以及时区
EXTRACT 从时间戳类型或者DATE类型中提取并返回年月日时分秒或时期
TO_TIMESTAMP(x[,format])用于将字符串x转化为一个TIMESTAMP类型,format指定转化类型
4、使用时间间隔INTERVAL
举例:优惠券有效期,打折促销的时间
类型 | 说明 |
INTERVAL_YEAR[(years_option)] TO_MONTH | 存储一个时间间隔,其单位是年和月;可以通过years_option参数来指定年的精确度,默认精度是2,意思是可以在时间间隔中为年数存储两位数字。如果试图向表中添加年数超过INTERVAL_YEAR TO MONTH列可以存储的记录,就会返回一个错误。时间间隔既可以存储正数,也可以存储负数 |
INTERVAL_DAY[(days_option)] TO_SECOND[(seconds_precision)] | 存储一个时间间隔,其单位是天和秒;可以动过指定可选的days_precision参数来指定天的精度,该参数是一个0~9的整数。默认值是2。 |
使用INTERVAL_YEAR TO MONTH类型
创建表coupons用来存储优惠券信息。duration用来记录优惠券有效的时间间隔。
SQL> create table coupons( 2 coupon_id integer constraint coups_pk primary key, 3 name varchar2(30) not null, 4 duration INTERVAL YEAR(3) TO MONTH 5 ); Table created要想数据库提供一个INTERVAL YEAR TO MONTH字面值,可以使用以下语法:
INTERVAL '[+|-][y][-m]' [YEAR[(years_precisiion)]] [TO_MONTH]
示例:
时间间隔字面量 | 说明 |
INTERVAL '1' YEAR | |
INTERVAL '11' MONTH | 时间间隔11个月(14>12 == 1年零2个月) |
INTERVAL '1-3' YEAR TO MONTH | 时间间隔为1年零3个月 |
INTERVAL '0-5' YEAR TO MONTH | 时间间隔为0年5个月 |
INTERVAL '-1-5' YEAR TO MONTH | 时间间隔为负数,值为1年零5个月 |
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。