Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1108 connectés 

  FORUM HardWare.fr
  Programmation

  [SQL] TO_INT

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] TO_INT

n°47815
dilyfe
Posté le 19-07-2001 à 11:53:50  profilanswer
 

Bonjour
 
Voila mon pb :
 
dans ma base, je stocke mes dates en varchar (aaaammjj) et dans mon module de recherche, j'ai un BETWEEN à faire avec date de début / date de fin
Je fais donc une requete du style
 
WHERE s_date > DateDeb AND s_date < DateFin
 
Pb, il ne tient pas compte de ces paramètres car il ne peux comparer les chaines caractères
 
La solution serait un TO_INT mais je ne trouve pas de telle fonction. Si quelqu'un connait l'equivalent du TO_INT pour SQL*Server.
 
Merci

mood
Publicité
Posté le 19-07-2001 à 11:53:50  profilanswer
 

n°47818
instantdha​rma
Ailleurs c'est ici
Posté le 19-07-2001 à 12:01:45  profilanswer
 

sql*server ne sait pas comparer des chaînes de caractères ?  :ouch: les bras m'en tombent ; j'a du mal à croire que c'est possible.
quel msg d'erreur tu as lorsque tu compares des chaînes ?
Remarque accessoire : c'est mieux d'utilser un type datetime ou date pour stocker des dates. ;)


---------------
di. / www.diredaredare.org - Ailes de la ville
n°47822
dilyfe
Posté le 19-07-2001 à 12:11:02  profilanswer
 

Pas de message d'erreur mais quand j'execute une recherche sur une période entre le 20010703 (3 juillet 2001) et le 20010713 (13 juillet 2001) et bien il me ramènes des enregistrements du 17,18 etc
 
Et j'ai pas dit que SQL*Server ne savait pas comparer les chaines de caractères (ou je me suis mal exprimé peux-etre).
Mais dans ce cas précis je fais :
WHERE s_date > 20010703 AND s_date < 20010713
 
Il me compare en mode caractères, résultat il me ramènes n'apporte quoi car il n'arrive pas comprendre que s_date > 20010703
 
Tu comprends ce ke je veux dire ?

n°47823
dilyfe
Posté le 19-07-2001 à 12:13:20  profilanswer
 

Et pour ce ki est du Format Date/Time, impossible, c une norme de notre intranet pour un truc bien précis, je sais plus trop koi...

n°47830
jupiler
Un cousin...
Posté le 19-07-2001 à 12:35:07  profilanswer
 

Sur Oracle, j'utiliserais TO_DATE('20010713','yyyymmdd')
 
doit bien y avoir un équivalent sur SQL Server


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°47850
instantdha​rma
Ailleurs c'est ici
Posté le 19-07-2001 à 14:01:53  profilanswer
 

normalement, si tu mets tes arguments entre guillemets, ça devrait aller  :??:  

Code :
  1. WHERE s_date > "20010703"
  2.   AND s_date < "20010713"


pour ma part, j'utilise Sybase sql server, qui est quasi-identique à Ms sql server (à l'origine, c'tait le même sgbd).
Si tu saisis le code suivant :

Code :
  1. declare @a varchar(8),@b varchar(8),@c varchar(8)
  2. select @a = "20010703"
  3. select @b = "20010713"
  4. select @c = "20010718"
  5. if @a > @b
  6.   print "a > b"
  7. else
  8.   print "b > a"
  9. if @b > @c
  10.   print "b > c"
  11. else
  12.   print "c > b"


tu devrais obtenir le résultat suivant :

Code :
  1. b > a
  2. c > b


 
si c'est le cas, la comparaison de chaînes fonctionne - et je pense qu'elle doit fonctionner.
sinon, tu peux utiliser convert() avec le bon format pour convertir tes chaînes en dates, mais ça va alourdir ton select inutilement parce que ça doit tourner tel quel !!! ou alors, ton where est incomplet ?


---------------
di. / www.diredaredare.org - Ailes de la ville
n°47866
Fred999
Rabat-joie
Posté le 19-07-2001 à 15:09:52  profilanswer
 

SQL Server???
 
A LA RESCOUSSE!!!!!!
 
Utilise le between, et la fonction convert()
 
where convert(int, s_date) between DateDebut and DateFin
 
en supposant que s_date est au format AAAAMMJJ, DateDebut et DateFin aussi.
 
Au pire, tu utilises les fonctions d'extraction de date :
 
datepart (format, date)
 
format : yy pour AAAA, mm pour MM, dd pour DD
 
Qui te nrenvoie un entier.

n°47881
instantdha​rma
Ailleurs c'est ici
Posté le 19-07-2001 à 16:11:21  profilanswer
 

>Fred999  
et sql server, il est pas foutu de comparer des chaînes de caractères  :eek2: encore un produit microsoft... :D  
parce que si on compare des chaînes de caractères, et si toutes les dates sont au format aaaammjj, c'est pas la peine de se farcir une conversion pour rien...


---------------
di. / www.diredaredare.org - Ailes de la ville
n°47895
dilyfe
Posté le 19-07-2001 à 16:38:48  profilanswer
 

instantdharma > c po bon comme ca
 
Et puis en fait c pas MS qui sait pas comparer les chaines de caractères, ca me parait logique que la requete puisse pas te dire mathieu > simone, il en est incapable( > , c pour comparer du numérique, des dates) le seul truc que tu peux faire avec le texte, c des ORDER BY, des recherches de chaines de caractères, etc...
 
Essaie avec Sybase sql server, ca sera pareil.
 
Enfin encore merci de ton aide
 
 
Fred999 > J'essaie ta solution, ca m'a l'air pas mal
Merci

n°47905
dilyfe
Posté le 19-07-2001 à 17:14:56  profilanswer
 

Yessss, ca marche
 
c le convert(int, s_date) ki me manquait ds la requete
 
Merci encore... :D

mood
Publicité
Posté le 19-07-2001 à 17:14:56  profilanswer
 

n°47916
Fred999
Rabat-joie
Posté le 19-07-2001 à 17:37:18  profilanswer
 

Wouala. De rien :bounce:
 
Mais bon, normalement l'instruction BETWEEN te fait très bien les comparaisons de dates, et, comme la conversion date <-> char est implicite, ça devrait rouler tout seul...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [SQL] TO_INT

 

Sujets relatifs
SQL et visual basiccomment recuperer le resultat d'une requete SQL en visual basic???
Transformation SQL - ORACLESQL Statement
[SQL] un select distinct qui trie tout seul et je n en veux pas!!!![SQL VBA]message d erreur de l espace!!!!!!! Besoin de pros
[SQL]Besoin d ecrire dans une table sans l ecraser,Delivrez moi![SQL] Probleme Besoin du mot magique
[Visual C++ 6]Base SQLADO sous WinCE et requete SQL
Plus de sujets relatifs à : [SQL] TO_INT


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR