Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/08/2003, 18h08   #1
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
Par défaut Insert Into + Date

Quelle est la bonne syntaxe pour inscrire une date en dur dans la base ?
Code :
1
2
 
INSERT INTO matable (id,nom,prenom,datenaiss) VALUES (5,'toto','tutu',12/01/2003)
Est-ce que ce format est bon ?
ou faut-il :
- mettre entre simple cote '12/01/2003' ?
- mettre des doubles barres : 12//01//2003 ?
- mettre les deux : '12//01//2003' ?
- mettre dans un ordre : 2003/01/12 ?
- mettre en complet : 12/01/2003 00:00:00
- mettre le totu en simple cote : '12/01/2003 00:00:00'
: :
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/08/2003, 18h29   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Par défaut Re: Insert Into + Date

Tout faux
ce qui marche à tous les coup c'est : '2003/01/22'
sinon la notation mois/jour/annee : '01/22/2003' à l'americaine...
le tout entre de simple cotes
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 09h34   #3
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
marche pas ((

voici mon code qui marche (sans la date):
Code :
1
2
3
 
string __requete = "INSERT INTO SALARIE (IDSALA,DIGITSALA,NOMSALA,PRENOMSALA,EMAILSALA,LOGINSALA,PASSWORDSALA) VALUES ("+
__salarie.accId+",'DIGT','OOOO','OOOO','OOOO@OOOO.OOO','OOOO','OOOO')";
voici le meme code qui ne marche pas (avec la date en plus):
Code :
1
2
3
 
string __requete = "INSERT INTO SALARIE (IDSALA,DIGITSALA,NOMSALA,PRENOMSALA,EMAILSALA,DATENAISSSALA,LOGINSALA,PASSWORDSALA) VALUES ("+
__salarie.accId+",'DIGT','OOOO','OOOO','OOOO@OOOO.OOO','2003/01/22','OOOO','OOOO')";
donc ce qui doit clocher c surement dans interbase ?
Dans ma table, j'ai mis comme DATATYPE pour DATENAISSSALA : DATE
a moins que c un autre ???

Help
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 09h59   #4
Membre du Club
 
Inscription : mars 2003
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 44
Points : 44
Points : 44
attention au dialecte (1 ou 3)
quelle version d'IB utilises tu ?

si tu ne sais pas quel dialecte tu utilises, peux tu nous dire si les types TIME et TIMESTAMP sont disponibles ?

basé sur la doc :

Citation:
CAST FROM VARCHAR(n), CHAR(n), CSTRING(n)
Succeeds it the string is in the following format:
TO
TIMESTAMP : YYYY-MM-DD HH:MM:SS.thou
DATE : YYYY-MM-DD
TIME : HH:MM:SS.thou
ceci en dialecte 3 ... en dialecte 1, c'est 'YYYY-MM-DD HH:MM:SS.thou'
Au passage : utilise "CAST ('YYYY-MM-DD' AS DATE)"
Gillou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 10h16   #5
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
J'utilise Interbase v7.1 demo
Le dialecte je ne sais pas c koi...

Sinon oui je peux créer des domaines avec TIME et TIMESTAMP.

D'après le pdf de interbase, le datatype DATE est :
size = 32 bits signés,
Range = 1 Jan 100 A.D à 29 FEV 32768 A.D
Description = ISC_DATE; store a date as a 32-bit longword

Je vois pour TIMESTAMP :
size = 64 bits
Range = 1 Jan 100 a.d to 29 feb 32768 a.d
Description = Also include time information.

Pour TIME :
Size = 32 bits unsigned
Range = 0:00 AM to 23:59:9999 PM
Description = ISC_TIME

Je pense que je vais essayer avec TIMESTAMP a la place de DATE...
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 10h23   #6
Membre du Club
 
Inscription : mars 2003
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 44
Points : 44
Points : 44
bon ok tu es bien en dialecte 3, et vu ta version c'est normal que tu ne sache pas, puisque tu n'as même pas à te poser la question ...


essaye de mettre CAST('2003/01/22' AS DATE) au lieu de '2003/01/22' uniquement
essaye ( ça m'étonnerait, mais qui sait... ) d'écrire '2003-01-22' et non pas '2003/01/22'
Gillou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 10h30   #7
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Tu utilises quel langage de programation et quel est ton provider (protocole/moyen d'accés à la base) ?
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 10h37   #8
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
J'ai fais un petit test sur une petite table et CA MARCHE !!!
J'ai donc remplacé DATE par TIMESTAMP, puis j'ai fais mon INSERT INTO avec une date en dure :
Code :
1
2
 
INSERT INTO TOTO (IDTOTO,NOM,DATEUX) VALUES (2,'tutu','2003/01/22')
Je me suis meme permis de rajouter une heure avec :
Code :
1
2
 
INSERT INTO TOTO (IDTOTO,NOM,DATEUX) VALUES (3,'tyty','2003/01/22 01:00:00')
Je résume donc :
Le datatype de mon champ DATEUX = TIMESTAMP.
Il faut bien inscrire la date dans ce format avec simple cotes:
'YYYY/MM/DD' = '2003/01/22'
Si avec heure :
'YYYY/MM/DD HH:MM:SS' = '2003/01/22 22:56:41'
Cependant j'ai testé avec les infos suivant :
'2003/01/22 22:56:99', '2003/01/22 22:56:9999', '2003/01/22 22:56:60'
ca marche pas.
Le maximum autorisé pour les heures :
'2003/01/22 23:59:59'

Merci Gillou et Barbibulle
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 10h54   #9
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
Langage utilisé : C#
Accès utilisé : IbOleDb
Interbase vers. : 7.1 demo english
FrameWork vers. : 1.1

J'ai essayé :
de remplacer : '2003/01/22' par CAST('2003/01/22' AS DATE)
ca ne marche pas,
CAST('2003-01-22' AS DATE) ne marche pas
CAST('22/01/2003' AS DATE) ne marche pas
CAST('22/012003') AS DATE ne marche pas
CAST('22-01-2003' AS DATE) ne marche pas
CAST('01-22-2003' AS DATE) ne marche pas
J'ai aussi essayé :
'2003-01-22' ca ne marche pas
'22-01-2003' marche pas
'01-22-2003' marche pas non plus.

Voila ben merci encore.
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 10h58   #10
Membre du Club
 
Inscription : mars 2003
Messages : 44
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 44
Points : 44
Points : 44
Citation:
Envoyé par BoeufBrocoli
Il faut bien inscrire la date dans ce format avec simple cotes:
'YYYY/MM/DD' = '2003/01/22' Normal
Si avec heure :
'YYYY/MM/DD HH:MM:SS' = '2003/01/22 22:56:41'Normal aussi
Cependant j'ai testé avec les infos suivant :
'2003/01/22 22:56:99', '2003/01/22 22:56:9999', '2003/01/22 22:56:60'
ca marche pas.normal avec 60 ou 99 secondes, et normal aussi pour les fractions de secondes car la syntaxe est 'hh:mm:ss.thou'
Merci Gillou et Barbibulle Pas de quoi !
Mais ça n'explique pas pourquoi ça ne marche pas avec le type DATE, alors qu'il me semble que cela devrait....
Gillou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2003, 11h23   #11
Nouveau Membre du Club
 
Inscription : avril 2003
Messages : 100
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 100
Points : 32
Points : 32
oui je pense aussi... bizarre... avec SQLServer ca marche bien...
peut etre que mon provider (IbOleDb) ne gere pas tres bien ce type... ??
BoeufBrocoli est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web