Utan @fromdate < @todaydate visar den en rad. @fromdate = convert(char(8),FrDt,12) Detta ger en char(8) med sex tecken i tex '010101' Japp.. Jag vet. Om FrDt hade varit ett datumfält. Men det är en integer med datat 20010101 i så om jag kör Varför använder du inte SMALLDATETIME eller DATETIME??? Det är inte jag som byggt databasen och har 0 möjlighet att ändra layout.. Jag fixar bara till en storedprocedure till en webbshop som ger fel pris när man kör en kampanj. kan du inte konverta inne i sp:n? och behålla strängvärdet i databasen? Kom på och provade cast för en stund sen... Samma skit. helt jäkla otroligt vad det var lurigt idag.. FIXAT!!!! JIPPI!LÖST! Tack alla!Hjälp!! varför blir resultatet null??
fältet fromdate är ursprungligen integer och i formatet 20010101
med FrDt < '20020205' går det bra...
Det måste vara nåt konverteringsknas men jag tycker jag garderat mej järnet nu.. Har också testat att putta in dom som integer båda två.
eftersom jag selectar variablerna på slutet och dom syns utan urval så hamnar det bevisligen värden där...
Hjälp!!
ProdNo kommer igentligen in i proceduren om ni undrar om det fasta värdet..
declare @stdsalesprice float
declare @dstsalesdiscount float
declare @fromdate char(8)
declare @todaydate char(8)
declare @customerprice float
declare @customerdiscount float
declare @customerfixed integer
declare @ProdNo char(10)
declare @productgroup13price float
declare @productgroup13discount float
declare @salesprice float
declare @discount float
select @ProdNo = '11'
--hämta standard pris
select @stdsalesprice = SalePr , @dstsalesdiscount = SaleDcp, @fromdate = convert(char(8),FrDt,12), @todaydate = '20' + convert(char(8),Getdate(),12)
from PrDcMat where
ProdNo= @ProdNo
and (@todaydate > @fromdate)
order by Srt
select @stdsalesprice, @fromdate, @todaydate, @ProdNoSv: Hjälp!! varför blir resultatet null??
@todaydate = '20' + convert(char(8),Getdate(),12) Detta ger '20' + char(8) text '20010101'
Sedan är jag lite osäker på hur sql behandlar jämförelser med olika långa char()
/johan/Sv: Hjälp!! varför blir resultatet null??
select @fromdate, @todaydate
så får jag
20010101 20020205 och dom ser ju jäkligt lika ut som fält...
Men så fort jag försöker jämföra parametrarna @fromdate < @todaydate
så går det åt helsike...
Mvh
RickardSv: Hjälp!! varför blir resultatet null??
/EmmaSv: Hjälp!! varför blir resultatet null??
MvhSv: Hjälp!! varför blir resultatet null??
Har iofs aldrig testat det själv - men det borde ju inte vara omöjligt,
då spelar det ju ingen roll om du skickar in 6 eller 8 tecken för datum -
den gör själv om det och du kan jämföra så som du har tänkt dig.
Du kan tom ange att inparametern ska vara av typen smalldatetime
och skicka in en sträng med 'datum' (fnuttarna måste finnas runt ett
datum). Sql kommer då att utgå ifrån att du skickat in ett giltigt datum
och kommer att jämföra det.
Vill du kontrollera datumet inne i sp:n kan du alltid ta emot dem som
strängar och skapa temporära variabler och tilldela dem värdena av
strängarna efter de kontroller du vill göra.
/emmaSv: Hjälp!! varför blir resultatet null??
Mer tips!
Mvh
RickardSv: Hjälp!! varför blir resultatet null??
Blev lite för lätt men tydligen kan man inte kombinera getdate() funktionen med en where i samma fråga.. Men dagen lär ju inte ändras innan frågan körts färdigt...
Tack snälla alla för tips och förslag!
-Emma, fick inte stil på datetime om jag sköt in tex 20020202 såg värdet en snabbis men sen sa den fieldoverflow eller nåt sånt skumt. Tyvärr kan jag heller inte ändra inparametrarna eftersom den anropas från en dll så det hann jag inte testa..
TACK TACK IGEN!!
RESULTAT:
declare @stdsalesprice float
declare @dstsalesdiscount float
declare @fromdate int
declare @todaydate int
declare @customerprice float
declare @customerdiscount float
declare @customerfixed integer
declare @ProdNo char(10)
declare @productgroup13price float
declare @productgroup13discount float
declare @salesprice float
declare @discount float
select @ProdNo = '11'
select @todaydate= '20' + convert(char(8),getdate(),12)
--hämta standard pris
select @stdsalesprice = SalePr , @dstsalesdiscount = SaleDcp, @fromdate = FrDt
from PrDcMat where
ProdNo= @ProdNo and @todaydate > FrDt
order by Srt
select @stdsalesprice, @fromdate, @todaydate, @ProdNo