Query met datetime loopt ergens fout?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
SELECT
users.login,
UNIX_TIMESTAMP(users.online) AS `online`,
UNIX_TIMESTAMP(users.start) AS `start`
FROM
`users`
LEFT JOIN `temp`
ON (temp.login = users.login)
WHERE
temp.login IS NULL
AND `online` + 777600 < NOW()
AND `start` + 777600 < NOW()
users.login,
UNIX_TIMESTAMP(users.online) AS `online`,
UNIX_TIMESTAMP(users.start) AS `start`
FROM
`users`
LEFT JOIN `temp`
ON (temp.login = users.login)
WHERE
temp.login IS NULL
AND `online` + 777600 < NOW()
AND `start` + 777600 < NOW()
de velden online en start zijn datetime 0000-00-00 00:00:00 in mysql. Wat ik probeer is, pak alle members die langer dan 9 dagen niet online zijn geweest & langer dan 9 dagen bestaan (sinds start).. Maar het werkt niet, hij pakt leden die pas sinds gisteren zijn aangemeld.. Ergens gaat het fout.. Iemand die mij wilt helpen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
SELECT
users.login,
UNIX_TIMESTAMP(users.online) AS `online`,
UNIX_TIMESTAMP(users.start) AS `start`
FROM
`users`
LEFT JOIN `temp`
ON (temp.login = users.login)
WHERE
temp.login IS NULL
AND UNIX_TIMESTAMP(users.online) + 777600 < NOW()
AND UNIX_TIMESTAMP(users.start) + 777600 < NOW()
users.login,
UNIX_TIMESTAMP(users.online) AS `online`,
UNIX_TIMESTAMP(users.start) AS `start`
FROM
`users`
LEFT JOIN `temp`
ON (temp.login = users.login)
WHERE
temp.login IS NULL
AND UNIX_TIMESTAMP(users.online) + 777600 < NOW()
AND UNIX_TIMESTAMP(users.start) + 777600 < NOW()
Gek genoeg werkt de tijd nog steeds niet, krijg resultaten terug die niet kloppen. Wat zou een andere mogelijkheid zijn om te controleren of de start en online tijd langer dan 9 dagen geleden is..
Gewijzigd op 28/01/2011 14:36:24 door OldDylan England
Dus: (voorbeeld van hoe het zou moeten werken(ongeveer dan..))
Owja, misschien zou je wat extra haakjes "()" kunnen toevoegen?
Gewijzigd op 28/01/2011 15:33:16 door Th van
OldDylan England op 28/01/2011 14:15:54:
pak alle members die langer dan 9 dagen niet online zijn geweest & langer dan 9 dagen bestaan (sinds start)..
Begrijp het niet. Je kunt alleen langer dan 9 dagen 'niet online' zijn geweest, als je minimaal dan 9 dagen bestaat. Met andere woorden: maak je het jezelf niet moeilijker dan nodig?
@Obelix, nee want als je niet online bent geweest is je tijd 0000-00-00 00:00:00 en dan gaan we dus helemaal de fout in :)