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

 


Dernière réponse
Sujet : [SQL] TO_INT
Fred999 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...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Fred999 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...
dilyfe Yessss, ca marche
 
c le convert(int, s_date) ki me manquait ds la requete
 
Merci encore... :D
dilyfe 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
instantdharma >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...
Fred999 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.
instantdharma 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 ?

jupiler Sur Oracle, j'utiliserais TO_DATE('20010713','yyyymmdd')
 
doit bien y avoir un équivalent sur SQL Server
dilyfe 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...
dilyfe 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 ?
instantdharma 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. ;)
dilyfe 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

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)