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

Adaptive Server Enterprise Sybase Discussion :

[T-SQL] insérer une date et une heure ?


Sujet :

Adaptive Server Enterprise Sybase

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut [T-SQL] insérer une date et une heure ?
    Bonjour, j'ai un problème j'arrive pas à insérer la date et l'heure dans des champs de type DATE et TIME

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO matable( heure_creation,datechangement,date_creation ) VALUES ('10:53:23','17-11-2006','2006-11-10 ')
    Voici mon message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DBD::Sybase::st execute failed: Server message number=249 severity=16 state=1 line=1  text=Syntax error during implicit conversion of VARCHAR value '10:53:23
    ' to a TIME field.
    Server message number=249 severity=16 state=1 line=1  text=Syntax error during implicit conversion of VARCHAR value '2006-11-10
    ' to a DATE field.
    Merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Je viens d'essayer l'insertion avec les même valeurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [687] DBA_SQL.testdb.1> create table t(t time, d date);
    [688] DBA_SQL.testdb.1> insert t values('10:53:23','17-11-2006');
    Msg 247, Level 16, State 1
    Server 'DBA_SQL', Line 1
    Arithmetic overflow during implicit conversion of VARCHAR value '17-11-2006' to a DATE field .
    [689] DBA_SQL.testdb.1> insert t values('10:53:23','2006-11-10');
    (1 row affected)
    Donc, la conversion de '17-11-2006' ne passe pas parce que dans ma config ASE pense que '17' c'est le mois. Par contre les autres chaines passent sans problème.

    Je vois que tu utilise DBI/DBD::Sybase - peut-être qu'il y a quelque chose qui perturbe le contenu des variables (un retour de chariot, p.ex.)

    Essaye de mettre la trace (DBI->trace(4)) pour voir ce qui est réellement envoyé au serveur.

    Michael

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut
    j'ai modifié la date en 2006-11-10

    et pourtout toujours la meme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DBD::Sybase::st execute failed: Server message number=249 severity=16 state=1 line=1 server=SYB125_DEV20 text=Syntax error during implicit conversion of VARCHAR value '14:05:19
    ' to a TIME field.
    Server message number=249 severity=16 state=1 line=1 server=SYB125_DEV20 text=Syntax error during implicit conversion of VARCHAR value '2006-11-10
    ' to a DATE field
    Je comprends pas trop ...

    le dbi->trace(4) ne marche pas on dirait...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Ton problème est que tu as un retour de chariot dans la chaine de char:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [696] DBA_SQL.testdb.1> insert t values('10:53:23
    [696] DBA_SQL.testdb.2> ', '2006-11-10
    [696] DBA_SQL.testdb.3> ');
    Msg 249, Level 16, State 1
    Server 'DBA_SQL', Line 1
    Syntax error during implicit conversion of VARCHAR value '10:53:23
    ' to a TIME field.
    Msg 249, Level 16, State 1
    Server 'DBA_SQL', Line 1
    Syntax error during implicit conversion of VARCHAR value '2006-11-10
    ' to a DATE field.
    [697] DBA_SQL.testdb.1>
    Donc - revoit ton code perl pour t'assurer que les variables qui contiennent l'heure et la date ne contiennent pas de \n. Par example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $date = ...je lis la date...;
    chomp($date);
    ...
    $sth=$dbh->prepare("insert ... values(?, ...)");
    $sth->execute($date, ...);
    Michael

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 95
    Par défaut
    Un petit chomp a en effet corrigé le problème. Merci beaucoup, j'aurai mis du temps pour trouver ça seul.

    Mais quelle idée aussi de rajouter un retour-charriot quand on utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $str_date = `date '+%d/%m/%Y %H:%M:%S'` ;
    en PERL...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Par défaut
    Ce n'est pas perl qui rajoute le \n - c'est l'OS...

    Ceci étant, on peut souvent aller plus vite en générant la date directement en perl (via time(), locatime(), etc.)

    Michael

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

Discussions similaires

  1. [AC-2007] Comparer une date d'une table et une date saisie
    Par minooo dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/03/2019, 22h40
  2. [DeskI XiR2] Comparaison d'une valeur à une date et à une date relative
    Par courti01 dans le forum Débuter
    Réponses: 1
    Dernier message: 07/11/2010, 22h39
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 21h16

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