Bonjour,
Sous Sybase ASE 12.5. Comment peut-on convertir une variable de type varChar en une variable de type timeStamp ?
Merci, Thig
Version imprimable
Bonjour,
Sous Sybase ASE 12.5. Comment peut-on convertir une variable de type varChar en une variable de type timeStamp ?
Merci, Thig
Le timestamp ne se touche pas. Si vous voulez traiter de la date et de l'heure, préférez un champ DATETIME
Pour préciser mon problème :
J'utilise le timestamp dans la clause where d'un update pour vérifier que la ligne que je veux modifier n’ait pas été modifiée par un autre traitement où utilisateur.
Je récupère le timestamp comme paramètre d'une proc stock, sous forme d'un chaine (varchar)
et je cherches comment convertir ma variable de type varchar en variable de type timestamp pour l'utiliser dans la clause where d'un update.
Thig
Pourquoi ne le récupérez-vous pas en timestamp directement ?
sinon
Code:convert(timestamp, @var)
Bonjour,
Malheureusement, je ne peux pas directement récupérer une variable de type timestamp car l'application client ne connait pas ce type de donnée; cette donnée est transformé par le client en chaine...
D'autre part la fonction "convert(timestamp, @var)" me retourne l'erreur : type 'timestamp' is not a defined system type
D'apres la doc de sybase, un "timestamp" est en fait un varbinary( 8 ), mais la fonction convert(varbinary( 8 ), @var) fonctionne, mais ne semble pas donner la bonne valeur ...
Merci, Thig
Il y a une réponse à ton problème depuis ?Citation:
Envoyé par Thig
Normalement si tu utilises des transactions pour ton update la donnée ne peux pas être modifier pendent ta mise à jour du fait qu'il a un vérrou exclusif sur ta table (ou page ou rows, selon ta configuration).
Bonjour
Non et l'utilisation de transaction ne me semble pas possible dans la cinématique des écrans de mon client.
Aussi, j'utilise une fonction de conversion maison et très bidouille... en attendant mieux...
..
SELECT @ASETimeStamp = "00000000"
SELECT @i = 0
WHILE @i < 8
BEGIN
SELECT @ASETimeStamp = STUFF(@ASETimeStamp,@i+1,1,CHAR(HEXTOINT("0x"+SUBSTRING(@PbTimeStamp,1+(@i*2),2))))
SELECT @i = @i + 1
END
...