2012-03-18 4 views
1

Je génère des données fictives pour une base de données, un attribut utilise TIMESTAMP(6).TIMESTAMP (6) Oracle Insert

Quelqu'un peut-il me donner un exemple de l'apparence de la valeur?

Aussi je voudrais être en mesure d'insérer la date le long

i.e. 03/18/2012 02:35 AM

pour qu'il ressemble à

INSERT INTO FLIGHT VALUES (1,'London Heathrow','Miami Airport','03/18/2012 02:35 AM','04/18/2012 13:35 PM'); 

Est-ce possible? Merci beaucoup ...

EDIT ----

Comment puis-je me débarrasser de la colonne d'horodatage de l'espace massif

space

+0

J'utilise TIMESTAMP (0) ', mais en quelque sorte la colonne dept_time a un espace énorme, voir la photo ci-dessus, comment puis-je me débarrasser de cette ? –

+2

Votre modification pose une question différente. Le SO est conçu pour fournir des réponses discrètes aux questions ciblées. Si vous avez un nouveau problème, posez une nouvelle question. Il n'y a pas de frais pour poser des questions, et vous avez beaucoup plus de chance d'obtenir une réponse (bien que je remarque que Justin a répondu à votre deuxième question dans sa réponse). – APC

+0

Ok, je garde ça à l'esprit, mais ces deux étaient un peu liés, je n'ai pas vu le point en ouvrant une nouvelle question, Merci à Justin hes un as;) –

Répondre

6

Chaque fois que vous faites affaire avec DATE ou TIMESTAMP types de données, vous doit toujours insérer les valeurs DATE ou TIMESTAMP. Vous ne devez pas insérer de chaînes et utiliser des conversions implicites pour convertir la chaîne en DATE ou en TIMESTAMP. Vous devriez appeler explicitement TO_DATE ou TO_TIMESTAMP. Votre instruction INSERT doit également indiquer explicitement les noms des colonnes que vous insérez.

Vous voudriez votre déclaration INSERT de regarder quelque chose comme ça

INSERT INTO FLIGHT(<<list of columns>>) 
    VALUES (1, 
     'London Heathrow', 
     'Miami Airport', 
     to_timestamp('03/18/2012 02:35 AM', 'MM/DD/YYYY HH:MI AM'), 
     to_timestamp('04/18/2012 13:35 PM', 'MM/DD/YYYY HH:MI AM')); 

Vous pouvez régler la façon dont SQL * Plus affiche les données dans une colonne particulière en changeant le masque de format. Pour E.g.

SQL> column dept_time format a30; 
SQL> column arrv_time format a30; 

provoquera SQL * Plus pour afficher à la fois DEPT_TIME et ARRV_TIME en 30 caractères horizontaux (vos chaînes actuelles NLS_TIMESTAMP_FORMAT semble générer 28 caractères, si vous changez NLS_TIMESTAMP_FORMAT, vous pouvez modifier la largeur de la colonne demandons à SQL * Plus d'afficher).

+0

Merci encore Justin, donc l'horodatage et la date sont pratiquement les même? –

+0

@JoseDavidGarciaLlanos - Un 'DATE' enregistre une heure à la seconde. Un TIMESTAMP peut stocker jusqu'à 9 chiffres de fractions de secondes. Vous pouvez également déclarer un TIMESTAMP WITH TIME ZONE ou un TIMESTAMP WITH LOCAL TIME ZONE qui stocke également un fuseau horaire afin de convertir les heures d'un fuseau horaire à un autre. –

+0

ah OK merci, je reçois de grandes quantités d'espace inutilisé pour ces colonnes en utilisant l'horodatage, vous pouvez le voir dans l'image ci-dessus. est-ce réparable ou c'est comme ça que ça devrait être.Merci Justin –

1

S'il vous plaît jeter un oeil à l'exemple suivant:

ALTER SESSION SET nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS'; 

SELECT * 
FROM orders 
WHERE ordered_at 
    BETWEEN '2013-10-06 12:00:00' 
     AND '2013-10-06 16:00:00' 
Questions connexes