Poderiamos usar por exemplo para armazenar vigências de determinado garantia por exemplo.
Comprei um aparelho de barbear e a garantia dele é de por exemplo 1 ano de 6 meses.Uma "super garantia" .
Login:
[oracle@marte ~]$ ps -ef|grep pmon oracle 2997 1 0 08:03 ? 00:00:01 asm_pmon_+ASM oracle 3115 1 0 08:05 ? 00:00:01 ora_pmon_dbpost oracle 5943 5892 0 11:51 pts/1 00:00:00 grep pmon [oracle@marte ~]$ sqlplus dbajcc@dbpost SQL*Plus: Release 11.2.0.1.0 Production on Fri Feb 12 11:51:26 2010 Copyright (c) 1982, 2009, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options dbajcc@DBPOST on 12-FEB-10 > |
Criando a tabela :
dbajcc@DBPOST on 12-FEB-10 >create table super_shavers 2 (name varchar2(30),warranty interval year to month ); Table created. Elapsed: 00:00:00.08 dbajcc@DBPOST on 12-FEB-10 > |
Inserindo dados na tabela super_shavers :
dbajcc@DBPOST on 12-FEB-10 >insert into super_shavers 2 values 3 ('shaver_100',to_yminterval('01-06')) ; 1 row created. Elapsed: 00:00:00.02 dbajcc@DBPOST on 12-FEB-10 > dbajcc@DBPOST on 12-FEB-10 >insert into super_shavers 2 values 3 ('shaver_200',to_yminterval('01-00')) ; 1 row created. Elapsed: 00:00:00.01 dbajcc@DBPOST on 12-FEB-10 >commit ; Commit complete. Elapsed: 00:00:00.00 dbajcc@DBPOST on 12-FEB-10 > |
Bom, comprei o barbeador hoje e quero ver até que data eu posso levar na assistência tecnica caso aconteça algum defeito de fabrica.
dbajcc@DBPOST on 12-FEB-10 >select sysdate + warranty as "Expiration Date", 2 name as "Product Name" 3 from super_shavers 4 where name ='shaver_100' ; Expiratio Product Name --------- ------------------------------ 12-AUG-11 shaver_100 1 row selected. Elapsed: 00:00:00.01 dbajcc@DBPOST on 12-FEB-10 > |
Há também o datatype INTERVAL DAY TO SECOND que coloca ainda mais precisão para dia,hora,minutos e segundos.
Criando a tabela de exemplo :
dbajcc@DBPOST on 12-FEB-10 >create table login_expiration 2 (login_name varchar2(50), 3 dbajcc@DBPOST on 12-FEB-10 >create table fool_login 2 (login_name varchar2(30),expiration_dt interval day to second); Table created. Elapsed: 00:00:00.07 dbajcc@DBPOST on 12-FEB-10 > |
Inserindo linhas :
dbajcc@DBPOST on 12-FEB-10 > dbajcc@DBPOST on 12-FEB-10 >insert into fool_login 2 values 3 ('rmartin',INTERVAL '30 5:00:06' DAY TO SECOND) ; 1 row created. Elapsed: 00:00:00.03 dbajcc@DBPOST on 12-FEB-10 > dbajcc@DBPOST on 12-FEB-10 >insert into fool_login 2 values 3 ('jccorrea',INTERVAL '75' DAY) ; 1 row created. Elapsed: 00:00:00.00 dbajcc@DBPOST on 12-FEB-10 >commit ; Commit complete. Elapsed: 00:00:00.02 dbajcc@DBPOST on 12-FEB-10 > |
Na minha tabela de exemplo vou verificar quanto tempo estes usuários/logins que foram criados hoje/agora possuem até serem bloqueados para entrar em um determinado sistema
Obs. * a tabela foi criada apenas para exemplo *
dbajcc@DBPOST on 12-FEB-10 > dbajcc@DBPOST on 12-FEB-10 >alter session set nls_date_format = 'dd/mm/rrrr hh24:mi' ; Session altered. Elapsed: 00:00:00.01 dbajcc@DBPOST on 12/02/2010 12:42 >select login_name,sysdate + expiration_dt 2 from fool_login 3 ; LOGIN_NAME SYSDATE+EXPIRATI ------------------------------ ---------------- rmartin 14/03/2010 17:43 jccorrea 28/04/2010 12:43 2 rows selected. Elapsed: 00:00:00.01 dbajcc@DBPOST on 12/02/2010 12:43 > |
Esta foi uma breve apresentação dos datatypes INTERVAL YEAR TO MONTH e DAY TO SECOND e duas funções para manipulá - los TO_YMINTERVAL(expressão' ) e INTERVAL 'expressão' .
Estes datatypes estão disponíveis no Oracle Database a partir da versão 9i .
Até,
Júlio César
No comments:
Post a Comment