Avatar billede tzag_dk Nybegynder
01. juni 2004 - 12:19 Der er 13 kommentarer og
1 løsning

Function i en mysql

Hej

Kan man kalde en Function inde i en mysql select?

SELECT * FROM tabel LEFT JOIN aar ON profiler.aar = aar.id LEFT JOIN maaned ON profiler.maaned = maaned.id LEFT JOIN dag ON profiler.dag = dag.id WHERE "&GetAge(&"dag.dag"&-&"maaned.maaned"&-&"aar.aar"&)&" <= "&session("alder1")&"

Eller er der andre alternativer?
På forhånd tak :-)
// Rene
Avatar billede fennec Nybegynder
01. juni 2004 - 13:48 #1
Ikke på den måde. Det er nok noget med at lave din alder om til en dato x år tilbage fra dagsdato.

".... where DinDatoKolonne <= '"& dateadd("yyyy",0-cint(session("alder1")),date()) &"'"
Avatar billede tzag_dk Nybegynder
01. juni 2004 - 13:57 #2
ok... Men brugerens alder bestemmes ud fra 3 tabeller.
aar
maaned
dag

Der efter udregner jeg dato´en med en function.
Jeg kan ikke lige se hvad det er du mener?
Avatar billede fennec Nybegynder
01. juni 2004 - 14:06 #3
Det er noget skidt, når du ikke har det som et dato felt.
det er deres fødselsdato ikke???

For så prøver jeg lige at komme op med noget. Ellers skal du til at ligge funktionen på databasen, og jeg ved ikke hvor meget af det er understøttet i MySQL.

hvordan ser din GetAge(day, month, year) funk ud??? (så er jeg nemlig fri for at lave den)
Avatar billede tzag_dk Nybegynder
01. juni 2004 - 14:12 #4
Jo det er deres fødselsdags dato :-)

Her er functionen:

Function GetAge(Foedselsdato)
  BornDay = Day(Foedselsdato)
  BornMonth = Month(Foedselsdato)
  BornYear = Year(Foedselsdato)

  If CInt(BornMonth) > CInt(Month(Date)) Then
      GetAge = Year(Date) - BornYear - 1
  ElseIf CInt(BornMonth) = CInt(Month(Date)) Then
      If CInt(BornDay) > CInt(Day(Date)) Then
        GetAge = Year(Date) - BornYear - 1
      Else
        GetAge = Year(Date) - BornYear       
      End If
  Else
      GetAge = Year(Date) - BornYear
  End If
End Function

Og den kaldes sådan her:
GetAge(""&RSdag("dag")&"-"&RSmaaned("maaned")&"-"&RSaar("aar")&"")
Avatar billede fennec Nybegynder
01. juni 2004 - 14:45 #5
Jeg kan ikke rigtig få det til at virke.

mit bedste bud bliver derfor noget i denne stil.

"..... where CAST(CONCAT(dag.dag,'-',maaned.maaned,'-',aar.aar) as date) >= '"& dateadd("yyyy",0-cint(session("alder1")),date()) &"'"

det kan godt være at det datoformat som du kører med på serveren er anderledes end "dd-mm-yyyy", men så bytter du bare op på felterne til det passer.
Avatar billede tzag_dk Nybegynder
01. juni 2004 - 14:48 #6
Jeg prøver lige :-)
Avatar billede tzag_dk Nybegynder
01. juni 2004 - 16:55 #7
Hej igen...

Hvordan laver man den her om:
"& dateadd("yyyy",0-cint(session("alder1")),date()) &"'

Så at den skriver dette format: yyyy-mm-dd ??
Avatar billede tzag_dk Nybegynder
01. juni 2004 - 17:44 #8
Nu virker det :-)
Jeg rettede lidt i det, så det blev til dette:

dato1 = dateadd("yyyy",0-cint(session("alder1")),date())
dato1 = Year(dato1) & "-" & Month(dato1) & "-" & Day(dato1)
dato2 = dateadd("yyyy",-cint(session("alder2")),date())
dato2 = Year(dato2) & "-" & Month(dato2) & "-" & Day(dato2)
sqlfind = sqlfind & "AND CAST(CONCAT(aar.aar,'-',maaned.id,'-',dag.dag) as date) >= '"& dato1 &"' - 1 AND CAST(CONCAT(aar.aar,'-',maaned.id,'-',dag.dag) as date) <= '"& dato2 &"' "

Ligger du et svar?
Og tak for hjælpen! :-)
Avatar billede fennec Nybegynder
02. juni 2004 - 08:22 #9
Du kunne også have sat session.lcid = 1053 for dataformat yyyy-mm-dd

men fedt at det virker.
Avatar billede tzag_dk Nybegynder
02. juni 2004 - 11:15 #10
Ja, man kunne godt have sat session.lcid = 1053, men så ville mine andre datoer på siden blive underlige :-)
Avatar billede fennec Nybegynder
02. juni 2004 - 11:21 #11
man kan jo skifte mellem lcid'er på siden...

session.lcid = 1053
conn.execute("insert into DinTabel(dato) values('"& dato1 &"')")
session.lcid = 1030

men det var bare en ide :o)
Avatar billede tzag_dk Nybegynder
02. juni 2004 - 11:26 #12
øv, det vidste jeg ikke :-(
Men det er der ikke noget at gøre ved nu, gider ikke at lave det om :-)

Syntes at arbejde med dato´er, er ikke altid det letteste :-)
Men syntes nu at det var en fed ide den med sql´en!
Avatar billede fennec Nybegynder
02. juni 2004 - 11:34 #13
Datoer er noget L... :o)

Men du skulle prøve at arbejde med 2 forskellige datoer i ASP, også finde forskellen på dem, når det vel at mærke ikke er antal dage det handler om.

prøv f.eks denne datediff("m","31-12-2003","01-01-2004"). Der er kun gået en dag, men den siger også der er gået en måned. Der er også gået et år....
Avatar billede tzag_dk Nybegynder
02. juni 2004 - 12:19 #14
Underligt :-)

Tror du evt at du kan se en løsning på den her??
http://www.eksperten.dk/spm/500615
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging