Newsgroup: it.comp.software.database
Titolo: inserimento di un orario in un campo di tipo DATE su Oracle

Utilizzo oracle 8.1.7 ed ho una tabella in cui devo inserire un orario (tipo
'12:00' con precisione al minuto) in un campo. Credo che il tipo del campo
debba essere un DATE ma non riesco a fare le insert.
Qualcuno puo aiutarmi magari facendomi un esempio di una insert che
funzioni?

 debba essere un DATE ma non riesco a fare le insert.
DATE è corretto (anche se comunque non potrai mai avere *solo* l'ora, ci
sarà sempre una data associata che poi non utilizzerai), prova con
insert into _tabella_ (_campo_orario) values (to_date('1200', 'hh24mi')
Saluti,
Ender

 debba essere un DATE ma non riesco a fare le insert.
Se devi gestire le ore, forse ti conviene un campo DATETIME, ma se
non devi farci calcoli sopra forse ti conviene ancora di piu' un
banale campo di 5 caratteri... o un campo numerico da trattare poi
in fase di visualizzazione/modifica.
Davide


wrote:

Io quando iniziai a programmare con Oracle come server persi tempo a
capire che il formato delle date che avevo sempre usato con MS SQL 7
non era accettato per default :-)
Lavorando sempre nel formato yyyy/mm/gg ho trovato essenziale la
funzione
alter session set NLS_DATE_FORMAT='yyyy/mm/dd' 
(vado a memoria, non ho i sorgenti qui con me) eseguita ad inizio
connessione.
Nel tuo caso potrebbe essere 
alter session set NLS_DATE_FORMAT='yyyy/mm/dd HH24:mi:ss'
 
Poi una insert l'esegui con 
insert into table .... values ('2003/06/20'....)
In ogni caso un giro su google con chiavi di ricerca "alter session
oracle date" ti da maggiori dettagli.
Stefano "HappyMan"
--
Database Gate - The Powerful SQL Editor ODBC-based
HD Checker - The S.M.A.R.T. Hard Disk Reader
Asus Checker - CPU and Asus MB Checker
http://www.sgr.info



Il campo DATE in oracle e' gestito con 7 byte
	secolo,anno,mese,giorno,ora,minuti,secondi
Quando definisci un campo DATE, porti sempre con te queste
 informazioni.
C'e' da dire che il modo di visualizzare una data e' indipendente 
 dal modo in cui la inserisci.
Inserire una data
-----------------
create table a (nome varchar2(30), nascita date);
insert into a values ('andrea',to_date('07/01/1971','gg/mm/yyyy');
insert into a values ('andrea',to_date('07-01-1971','gg-mm-yyyy');
insert into a values ('andrea',to_date('01/1971/07','mm/yyyy/gg');
...etc. Tutte queste forme sono equivalenti. L'importante e' dare il
formato con cui si passa la data alla funzione di conversione TO_DATE.
Visualizzare una data
---------------------
1.Puoi scegliere di utilizzare la funzione TO_CHAR
select nome,to_char(nascita,'yyyymmdd') from a;
select nome,to_char(nascita,'dd mm yyyy') from a;
select nome,to_char(nascita,'dd.mm.yyyy') from a;
Come nel caso di insert, le forme riportate sono equivalenti.
2. Puoi scegliere di utilizzare la variabile d'ambiente NLS_DATE_FORMAT
----->
[vasp2.VASP2]/sbrdbms/oracle-> export NLS_DATE_FORMAT='dd mm.yyyy'
[vasp2.VASP2]/sbrdbms/oracle-> echo $NLS_DATE_FORMAT
dd mm.yyyy
[vasp2.VASP2]/sbrdbms/oracle-> sqlplus internal
 
SQL*Plus: Release 8.1.7.0.0 - Production on Fri Jun 20 11:01:27 2003
 
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
 
 
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
 
SQL> select sysdate from dual;
 
SYSDATE
----------
20 06.2003
<-----
Di default oracle formatta la data come NLS_DATE_FORMAT=dd-mon-yy
SQL> exit
SQL> Disconnected from Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
[vasp2.VASP2]/sbrdbms/oracle-> unset NLS_DATE_FORMAT
[vasp2.VASP2]/sbrdbms/oracle-> sqlplus internal
 
SQL*Plus: Release 8.1.7.0.0 - Production on Fri Jun 20 11:04:08 2003
 
(c) Copyright 2000 Oracle Corporation.  All rights reserved.
 
 
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production
 
SQL>  select sysdate from dual;
 
SYSDATE
---------
20-JUN-03
 
Quello che voglio dire, da tutto questo e' che indipendentemente come si
utilizza la data, Oracle usa sempre tutti i byte a disposizione per
valorizzare il campo DATE. E non dobbiamo neanche preoccuparci di come la
inseriamo per poi visualizzarla: le due fasi (insert e select) son
distinte.
P.S.
---
Se volessi inserire anche l'ora i minuti ed i secondi:
insert into a values ('andrea',
to_date('07/01/1971 13:31:20','dd/mm/yyyy hh24:mi:ss');

 to_date('07/01/1971 13:31:20','dd/mm/yyyy hh24:mi:ss');
...per fortuna. ;)