Avatar billede supermand69 Nybegynder
19. januar 2004 - 15:25 Der er 10 kommentarer og
1 løsning

timestamp field

hej...

jeg har et felt i MySQL hvor jeg smider et timetamp i form af now() ind... hvilken type skal feltet være?? jeg har sat den til varchar(10)?!
Avatar billede Slettet bruger
19. januar 2004 - 15:29 #1
Hvis det er et unix timestamp, du vil have sat ind skal du bruge UNIX_TIMESTAMP() og ikke NOW(). NOW() giver typisk en tid i formatet: 'YYYY-MM-DD HH:MM:SS'

UNIX_TIMESTAMP() retunerer en unsigned int. Så lav typen til int unsigned.

http://www.mysql.com/doc/en/Date_and_time_functions.html
Avatar billede supermand69 Nybegynder
19. januar 2004 - 15:35 #2
ok... altså UNIX_TIMESTAMP() laver den samme int som time() i PHP??

hvordan skal jeg så lave min query?? jeg skal vælge brugere ud med en bestemt alder...

SELECT FLOOR((TO_DAYS(NOW())-TO_DAYS(birth))/365.25) AS age FROM $db.users WHERE age=22"
Avatar billede detox Nybegynder
19. januar 2004 - 16:28 #3
Med den forespørgsel skal du nok hellere vælge et felt af typen DATETIME.
Avatar billede supermand69 Nybegynder
19. januar 2004 - 16:49 #4
detox > gider du give et eksempel?? :)
Avatar billede supermand69 Nybegynder
20. januar 2004 - 12:30 #5
er der ikke nogen der lige kan give mit et eksempel med datetime?? hvordan jeg søger efter en specifik alder??
Avatar billede Slettet bruger
20. januar 2004 - 14:50 #6
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(birth)), '%y') AS age FROM users WHERE age = '22';
Avatar billede supermand69 Nybegynder
20. januar 2004 - 15:01 #7
mercur8 -->

hvordan ser mit birth felt så ud?? er det en int eks. 1075611600 ??
Avatar billede Slettet bruger
20. januar 2004 - 15:05 #8
Nej så er dit felt et DATETIME (med formatet 'YYYY-MM-DD HH:MM:SS').

Læs mere om forskellen på dato/tid typerne på:
http://www.mysql.com/doc/en/DATETIME.html
Avatar billede supermand69 Nybegynder
20. januar 2004 - 15:13 #9
det kan måske ikke lade sig gøre at man har feltet 'birth' som en int... for så ville man jo i teorien søge hurtigere i MySQL ikk??
Avatar billede Slettet bruger
20. januar 2004 - 15:20 #10
Nu spurgte i din kommentar 20/01-2004 12:30:54 om en forespørgsel der brugte DATETIME. Så det fik du.

Med en UNSIGNED INT og et unix timestamp, skal du lave beregningen i PHP. Altså hvad er minimums og maksimums værdien i sekunder for alderen der tilsvarer 22 år. Og nej det går bestemt ikke hurtigere end at bruge date typerne og mysqls date funktioner.
Avatar billede supermand69 Nybegynder
20. januar 2004 - 15:58 #11
ok.. tark :)
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
Computerworld tilbyder specialiserede kurser i database-management

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