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
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
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');
...per fortuna. ;)