Jag håller på och gör en sökfunktion där man väljer vilken ålder man ska söka på. I databasen så har jag sparat vilket datum personen är född, dvs yyyy-mm-dd. Hur man får ut åldern från datumet är inget problem, dock har jag problem med att göra det omvänt. inte särskilt svårt.. Funktionsanropen är oerhört ineffektiva i where vilkor. I detta fallet är det inte heller nödvändigt.Ålder till datum
Tips någon??Sv: Ålder till datum
Man använder den koden du har och stoppar i sqlen.
Har du ett spann på ålder du/användaren söker på gör du så här:
<code>
alder=DateDiff("yyyy",fodelsedatum,dagensdatum)
lowerage=request.querystring("lowerage")
upperage=request.querystring("upperage")
SQL= "SELECT [massa fält] FROM tabell WHERE DateDiff(yyyy,fodelsedatumfältnamn,"&dagensdatum&") => "&lowerage&" AND DateDiff(yyyy,fodelsedatumfältnamn,"&dagensdatum&") =< "&upperdate&""
</code>
Är det ett specifik ålder gör du så här:
<code>
requestage=request.querystring("requestage")
SQL= "SELECT [massa fält] FROM tabell WHERE DateDiff(yyyy,fodelsedatumfältnamn,"&dagensdatum&") = "&requestage&" "
</code>
Så säger iaf min logik. Jag har själv inte testat kodenSv:Ålder till datum
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "#" & Value & "#"
Else
SQLDate = "Null"
End If
End Function
Dim FromAge
Dim ToAge
Dim Min
Dim Max
FromAge = 20
ToAge = 25
Min = DateAdd("yyyy", -FromAge, Date)
Max = DateAdd("yyyy", -ToAge-1, Date)
SQL = "SELECT TableName.*" & vbCrLf & _
"FROM TableName" & vbCrLf & _
"WHERE TableName.BirthDay > " & SQLDate(Min) & " AND TableName.BirthDay <= " & SQLDate(Max)
Eller:
Function SQLDate(Value)
If IsDate(Value) Then
SQLDate = "#" & Value & "#"
Else
SQLDate = "Null"
End If
End Function
Dim Age
Dim Min
Dim Max
Age = 27
Min = DateAdd("yyyy", -Age, Date)
Max = DateAdd("yyyy", -1, Min)
SQL = "SELECT TableName.*" & vbCrLf & _
"FROM TableName" & vbCrLf & _
"WHERE TableName.BirthDay > " & SQLDate(Min) & " AND TableName.BirthDay <= " & SQLDate(Max)