IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Firebird Discussion :

Insert Into + Date


Sujet :

SQL Firebird

  1. #1
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut Insert Into + Date
    Quelle est la bonne syntaxe pour inscrire une date en dur dans la base ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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'
    : :

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    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

  3. #3
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    marche pas ((

    voici mon code qui marche (sans la date):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 44
    Points : 49
    Points
    49
    Par défaut
    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 :

    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)"

  5. #5
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    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...

  6. #6
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 44
    Points : 49
    Points
    49
    Par défaut
    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'

  7. #7
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Tu utilises quel langage de programation et quel est ton provider (protocole/moyen d'accés à la base) ?

  8. #8
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  9. #9
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    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.

  10. #10
    Membre du Club
    Inscrit en
    Mars 2003
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 44
    Points : 49
    Points
    49
    Par défaut
    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....

  11. #11
    Membre du Club
    Inscrit en
    Avril 2003
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    oui je pense aussi... bizarre... avec SQLServer ca marche bien...
    peut etre que mon provider (IbOleDb) ne gere pas tres bien ce type... ??

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] INSERT INTO date
    Par hugodu28 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2013, 18h33
  2. INSERT INTO DATE DU JOUR
    Par serges dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/08/2009, 11h07
  3. erreur syntaxe sur insert into (date)
    Par jpclutier dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/05/2009, 10h02
  4. [Débutant]Requete INSERT INTO + date
    Par brak__ dans le forum Access
    Réponses: 25
    Dernier message: 30/01/2007, 09h55
  5. ajouter des dates délémitées dans INSERT INTO ?
    Par samlepiratepaddy dans le forum Access
    Réponses: 8
    Dernier message: 27/09/2005, 08h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo