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

Ålderkrångel


lillen_009

Rekommendera Poster

Det vill sig inte när jag ska sortera in mina medlemma i åldersgrupper. Jag har pnr på mina medlemmar och vill sortera in dem i 0-18 år; 18-30 år: 30-60 år; 65+ år

 

Vad använder man då. DateAdd?? Datediff?? JAg vill ah en statistiksida och då ha dessa villkor i SQL:en. Prestandan på den sidan spelar ingen som helst roll, den får gärna vara långsam om den fungerar somd en ska.

 

JAg har kolumnen Birthday öch måste väl använda något av ovanstående kommandon och jaämföra med now(), men hur??

 

Smidigast är väl att ha 4 separata SQL-satser

 

Länk till kommentar
Dela på andra webbplatser

Skapa en datestamp som är dagens datum, ex. 2002-01-17 ( NOW() i MySQL) och minska med din ålder som du lagrat idbn. Skillnaden utgör ditt sortetingsunderlag ex. 2002-01-17 - 1996-01-22 = 8 bast eller nåt.

 

Länk till kommentar
Dela på andra webbplatser

Skapa en fiktiv now(), dvs 2003-01-13 13:30:00 och minska bara med ditt reggade värde (Datum/tid i Access). Access är inge bra med syntax, intersect, minus etc. funkar dåligt. Oracle etc. är bra (men inte lika snabbt som mysql). PHP är mycket enkelt att lära + opensource etc.

 

Länk till kommentar
Dela på andra webbplatser

Problemet är att jag har en stor db i Access och inte vidare instatt i något av de andra. Kan man inte lösa det på något sätt mha now() - så att man slipper hålla på och ändra datum. Idag:

2003-01-17 jämföres mot (gruppen 0- = 1985-01-17 (år 2003-18 år). Eller är det bara ett önskescenario att man ska kunna göra så...

 

Länk till kommentar
Dela på andra webbplatser

Inget som hjälper dig men i mySQL skulle det vara så här snyggt:

SELECT * FROM `users` WHERE birthdate BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -18 YEAR) AND CURRENT_DATE()

 

...för att få fram 0-18-gruppen.

 

Jag kan varken VBScript eller Access, men med min gode vän Google vid min sida, så har jag kommit fram till följande:

 

SQL = "SELECT * FROM `users` WHERE birthdate BETWEEN '" & DateAdd("yyyy", -18, "2003-01-18") & "' AND '2003-01-18'";

 

Ovanstående VBS-syntax är troligigtvist fel, men DateAdd("yyyy", -18, "2003-01-18") borde ge ett datum 18 år tidigare. Hur du får dit dagens datum är ditt problem. Min goda vän var lite sur så han ville inte visa mig hur man gör det. :(

 

Hursomhelst bör en färdig SQL-sats se ut så här:

SELECT * FROM `users` WHERE birthdate BETWEEN '1985-01-18' AND '2003-01-18'

 

Om inte ACCESS klarar av en så enkel grej som BETWEEN då får du ge den stryk för att den är så efterbliven. ;)

 

Jag lärde mig nåt ikväll tror jag... :)

 

Om DateAdd:

http://www.chilisoft.com/caspdoc/360docs/html/vbscript_dateadd_function.htm

 

Hoppas att svaret hjälpte, på nåt konstigt sätt... fattar nästan inte själv varför jag ger in mig på en ASP-fråga... :S

 

God natt!

 

 

_________

TicoRoman - The One And Only

 

-Den vise vill veta, den dåraktige tala-

 

[inlägget ändrat 2003-01-18 00:51:32 av TicoRoman]

[inlägget ändrat 2003-01-18 00:52:34 av TicoRoman]

[inlägget ändrat 2003-01-18 00:54:39 av TicoRoman]

[inlägget ändrat 2003-01-18 01:16:49 av TicoRoman]

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...