Précédent   Forum des professionnels en informatique > Bases de données > Sybase > Adaptive Server Enterprise
Adaptive Server Enterprise Forum d'entraide concernant Sybase Adaptive Server Enterprise, le dataserver phare de Sybase
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 10/11/2006, 10h56   #1
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
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 :
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 :
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.
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 12h35   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Je viens d'essayer l'insertion avec les même valeurs:

Code :
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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 14h10   #3
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
j'ai modifié la date en 2006-11-10

et pourtout toujours la meme erreur

Code :
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...
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 14h21   #4
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Ton problème est que tu as un retour de chariot dans la chaine de char:
Code :
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 :
1
2
3
4
5
6
 
my $date = ...je lis la date...;
chomp($date);
...
$sth=$dbh->prepare("insert ... values(?, ...)");
$sth->execute($date, ...);
Michael
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 14h49   #5
Membre du Club
 
Inscription : janvier 2006
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 95
Points : 40
Points : 40
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 :
1
2
 
my $str_date = `date '+%d/%m/%Y %H:%M:%S'` ;
en PERL...
ionix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2006, 15h11   #6
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
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
__________________
Michael Peppler
Membre de TeamSybase - www.teamsybase.com

"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
mpeppler 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 15h03.


 
 
 
 
Partenaires

Hébergement Web