Just nu i M3-nätverket
Gå till innehåll

Hämta ålder direkt ur databas


Bagendahl

Rekommendera Poster

Hej

 

Skulle behöva hjälp med ett problem. Jag har en databas (MySQL) med födelsedata (YYYYMMDD-XXXX).

När jag sätter en SQL-Sats skulle jag vilja plocka ur dom som är t.ex över 30. Jag har en lösning där den sorterar via ett asp vbscript men jag skulle vilja ha den i förfrågan till databasen istället.

 

Så här ser det ut men tar aldeles för lång tid samt att jag inte får fram hur många det är i en Count.

 

Response.Write Age(objRs("birth"))

Function Age(datBorn)
If Len(datBorn) >= 8 Then
	strSetNewDate = Left(datBorn,4) & "-" & Mid(datBorn,5,2) & "-" & Mid(datBorn,7,2)
 	Age = DateDiff("yyyy", strSetNewDate, Date())
 	If (Month(Date()) < Month(strSetNewDate)) or _
 		(Month(Date()) = Month(strSetNewDate) and Day(Date()) < Day(strSetNewDate)) Then Age = Age -1
 Else
 End If			
End Function

 

Så här skulle jag vilja att det ser ut, där den hämtar en function att kolla åldern:

 

birth ser ut så här i databasen = YYYYMMDD-XXXX

SELECT birth WHERE Age(birth)=<'30'

Function Age(datBorn)
If Len(datBorn) >= 8 Then
	strSetNewDate = Left(datBorn,4) & "-" & Mid(datBorn,5,2) & "-" & Mid(datBorn,7,2)
 	Age = DateDiff("yyyy", strSetNewDate, Date())
 	If (Month(Date()) < Month(strSetNewDate)) or _
 		(Month(Date()) = Month(strSetNewDate) and Day(Date()) < Day(strSetNewDate)) Then Age = Age -1
 Else
 End If			
End Function

 

Men eftersom detta inte fungerar undrar jag nu hur man kan göra denna lösning. Jag vill INTE ha lösningar som gör om eller splitta upp födelsedatan i databasen (30.000 poster).

 

Tacksam för all hjälp

Mvh

Patrick

 

Länk till kommentar
Dela på andra webbplatser

Hej,

du saknar väl en "End If" i funktionen?

 

Kanske inte direkt svar på din fråga, men finns det någon anledning till att du inte gjort så här:

Function Age(datBorn)
strSetNewDate = Left(datBorn,4) & "-" & Mid(datBorn,5,2) & "-" & Mid(datBorn,7,2)
Age=Left(DateDiff("d",strSetNewDate, Now())/365.25,2)
End Function

 

Länk till kommentar
Dela på andra webbplatser

Hej

 

Functionen fungerar idag, så det skall inte vara en "End If". Nej, det finns ingen anledning till att jag inte gjort som du beskrev men det började med år först sen blev det utbyggt till månad och dag.

Men som sagt, detta hjälpte mig inget men tack ändå.

 

Mvh

Patrick

 

Länk till kommentar
Dela på andra webbplatser

[color="#0000ff"]Select[/color] COUNT(birth) FROM Table_1 WHERE [color="#0000ff"]DateDiff[/color]([color="#0000ff"]Year[/color], CAST([color="#0000ff"]Left[/color](birth,8) AS smalldatetime), getdate())>29

(byt ut Table_1 mot rätt tabellnamn)

 

[edit:] Såg inte att det var fråga om MySQL... Koden ovan funkar i hur som helst i MS SQL.

 

/Cluster

------------------------------------------------------------

Ditt vetande är värdelöst om inte andra vet att du vet

-----------> http://eforum.kicks-ass.net <------------

 

[inlägget ändrat 2006-10-06 18:28:44 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...