webForumDet fria alternativet

Datum sökning - formaterings problem

ASPur ASP

14 svar · 649 visningar · startad av Meng

Mengs avatarMengMedlem sedan feb. 2003549 inlägg
Frågan#1

Hej jag försöker göra en sökmotor som kan söka på datum men som jag vet så ser inte datumet i databasen helt ut som det jag söker på, så jag får inte rätt på det.

Har provat men CDate, olika datum formateringar och @nders jag har sökt runt här om det också :)

Det ser ut så här:

        SQL = "Select * From varelager Where reserveretdato Like '%19-07-2005%' 
AND sletdato is null AND slutdato is null Order By reserveretdato Desc"

Exempel på reserveretdato: 19-07-2005 10:03:03

Och problemet är att jag aldrig hittar något, söker jag på 05 får jag upp några stycken men inte alla som jag borde ifall det var årtalet som den hämtade, det måste vara något formaterings fel men jag vet inte vad?

@nderss avatar@ndersMedlem sedan juni 200032 969 inlägg
#2

Är datumet i databasen lagrat i ett datumfält? I så fall, se till att du har ett datum som är formaterat på rätt sätt (du kan exempelvis använda svenskt datumformat i din sökning). Sätt LCID till 1053 på sidan så får du ett datum i riktigt format.

Dessutom: använd inte LIKE annat än när du ska göra fritextsökning på fält med stränginnehåll.

Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#3

Jepp alla fält jag söker på är datumfält i en access databas men de är inställda på kort datumformat men vad jag vet så är det bara rellevant när man tittar på databasen i access.

Har ersatt LIKE med = men får ändå inte rätt på det, hittade desutom inte LIKE på DevGuru men det är kanske för att det hör till SQL och inte asp?

        SQL = "Select * From varelager Where opretdato = CDate('22-06-2005')
 AND sletdato is null AND slutdato is null Order By opretdato Desc"

Funkar inte utan CDate heller..

Hur gör jag nu?

Red: LCID har jag haft på sidan hela tiden också, körde med danskt till att börja med, har för mig att det är 1030 men jag har märkt att det är många problem med det så nu kör jag 1053 över hela intranätet...

@nderss avatar@ndersMedlem sedan juni 200032 969 inlägg
#4

Som sagt, ställ frågan med svenskt datumformat så ska det fungera.

SQL = "Select * From varelager Where opretdato = #2005-06-22#
 AND sletdato is null AND slutdato is null Order By opretdato Desc"
Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#5

Nu fungerar det om jag söker på det ända fältet där man själv väljer datum alltså det ända fältet som t ex bara har 22-06-2005 och inget klockslag eller annat.

Söker jag med #2005-06-22# eller #22-06-2005# på t ex 22-06-2005 15:48:28 så hittas den inte. Måste jag inte ta bort tiden via nån formaterings tag först?

Vad gör # på varsida av datumet.. ?

Red: Har denna koden i toppen på alla sidor:

Response.Buffer=True
Response.Expires=0
Session.Lcid = 1053
Response.Clear
Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#6

Söker jag på ett exaktdatum med klockslag som jag har kopierat från databasen så funkar det.. hur kommer jag utanom klockslaget?

22-06-2005 15:48:28 = 22-06-2005 15:48:28

Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#7

funkar ju om jag lägger en

BETWEEN #22-06-2005 00:00:00# AND #22-06-2005 23:59:59#

men det är ju inte särskillt optimalt tycker jag..

Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#8

Några datum kan den inte hitta t ex. 12-07-2005.

Red. Är ordnat nu, men formatering utan tid hittar jag inte =/

Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#9

Varfør %"#¤%"#¤ kan jag inte göra så här?

        SQL = "Select * From " & Tabbe & " Where " & FormatDateTime((Falt),2) & " #" & Request.Querystring("sokord") & "# AND sletdato is null AND slutdato is null Order By " & Falt & " Desc"

Får bara felmess om FormatDateTime då, samma med CDate..

BaltizMedlem sedan maj 200591 inlägg
#10

Den där sql-satsen ser inte hälsosam ut. Skriv ut variabeln SQL med response.write och kolla hur själva satsen ser ut.

Mengs avatarMengMedlem sedan feb. 2003549 inlägg
#11

Jaja jag vet men det är ju inte det jag frågar...

BaltizMedlem sedan maj 200591 inlägg
#12

Vad är Falt för nåt då? Om det är ett fält i databasen så går det inte att skriva så, ASP-kod går inte tillämpa på fält i databasen.

Melittas avatarMelittaMedlem sedan sep. 2003448 inlägg
#13

men i sql kan du väll använda date?
Where date(reserveretdato) = #2005-07-19#

@nderss avatar@ndersMedlem sedan juni 200032 969 inlägg
#14

Melitta skrev:

men i sql kan du väll använda date?

Nej, date() är en funktion som inte tar några argument, utan bara returnerar dagens datum.

- - - - -

För att vara övertydlig i det jag postat tidigare bifogar jag en länk till ett fint Guffa-inlägg: http://www.webforum.nu/showthread.php?s=&postid=1064602#post1064602

Mvh

SannyWMedlem sedan jan. 2003438 inlägg
#15

Skulle det inte gå att lösa med DatePart? Alltså att du bygger ihop ditt sökresultat, om jag nu har förstått dig rätt. Något liknande detta kanske?

typ,

'str = Request.Querystring("sokord")
str = "2005-05-21 18:00:00"

' Hämtar året
strYear = Datepart("yyyy", str)

' Hämtar månaden
If Datepart("m", str) < 10 Then 
  strMonth = "0"& Datepart("m", str) 
Else 
  strMonth = Datepart("m", str) 
End if

' Hämtar dagen
strDay = Datepart("d", str) 

' Summerar till datum för att göra sökning mot strDate
strDate = strYear &"-"& strMonth &"-"& strDay 

SQL = "Select * From " & Tabbe & " Where opretdato = #" & strDate & "# AND sletdato is null AND slutdato is null Order By " & Falt & " Desc"
136 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)