test sur longueur d'un champ numérique / conversion

test sur longueur d'un champ numérique / conversion - SQL/NoSQL - Programmation

Marsh Posté le 29-05-2006 à 15:08:49    

bonjour,
j'ai deux champs numériques pour la date (8 positions) et l'heure (6 positions) : ex 20060501 pour le 01/05/06 et 102825 pour 10h28mn25s
 
=> Pble : si l'heure passe à 091005 le résulat est tronqué !

Requete utilisée :  

SUBSTRING(CAST(lechampDate as varchar), 7,2)+'/'+SUBSTRING(CAST(lechampDate  as varchar),5,2)+'/'+SUBSTRING(CAST(lechampDate  as varchar),1,4)
    +' '+
SUBSTRING(CAST(lechampHeure  as varchar),1,2)+':'+SUBSTRING(CAST(lechampHeure as varchar),3,2)+':'+SUBSTRING(CAST(lechampHeure as varchar),5,2)
 
Donc je dois tester avec len(lechampHeure) si 6 ou 5 / Auriez vous quelque chose de plus simple
 
Merci


Message édité par systemanager le 29-05-2006 à 15:09:25
Reply

Marsh Posté le 29-05-2006 à 15:08:49   

Reply

Marsh Posté le 29-05-2006 à 15:28:48    

regarde du côté de la fonction "lpad"
 
tu peux aussi l'émuler en concaténant '000000' devant un to_char de ton heure, et en ne prenant que les 6 derniers caractères (ça fait la même chose que le LPAD, mais en plus goret ;))

Reply

Marsh Posté le 29-05-2006 à 15:29:33    

PS: sâchant qu'il n'y a pas de LPAD sous SQL Server, hors ta syntaxe ressemble à cette de SQL Server du coup je préfère proposer les deux méthodes...

Reply

Marsh Posté le 29-05-2006 à 16:12:33    

Arjuna a écrit :

PS: sâchant qu'il n'y a pas de LPAD sous SQL Server, hors ta syntaxe ressemble à cette de SQL Server du coup je préfère proposer les deux méthodes...


oui pas de lpad pour Sql server bien domage
 
si je force la position soit avec : select '0'+cast(lechampHeure as varchar) ou par right('00000000'+lechampHeure,7)
 
mais sans succes j'ai toujours l'omission du '0' devant 94212 au lieu de 094212


Message édité par systemanager le 29-05-2006 à 16:14:43
Reply

Marsh Posté le 29-05-2006 à 16:24:16    

ok j'ai ca aussi
right('0'+cast(champHeure as varchar(6)),6) et ca marche mais je cherche mieux ! qui plus subtile ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed