Christian Kruse: Wo liegt der Fehler?

Beitrag lesen

你好 jaylibII,

[...]
WHERE anfang < '.time().' AND '.time().' < ende O
[...]
  anfang timestamp(14) NOT NULL,
  ende timestamp(14) NOT NULL default '00000000000000',
  name varchar(30) NOT NULL default '',
  datum datetime NOT NULL default '0000-00-00 00:00:00',
[...]

Du verwendest hier einen MySQL-internen Datentyp fuer anfang, ende
und datum lieferst aber die Daten nicht im richtigen Format. time()
liefert die Sekunden seit 1970, MySQL erwartet aber eine
Datums-Angabe im internen Format. Wenn du zwingende Gruende hast,
warum du time() verwenden willst, brauchst du FROM_UNIXTIME() um
den Unix-Timestamp in das richtige Format zu bringen. Wenn du
time() nur eingesetzt hast, weil du es nicht besser wusstest, kannst
du das besser mit der MySQL-Funtkion NOW() machen, die das aktuelle
Datum im MySQL-internen Format zurueck gibt. Das koennte dann z. B.
so aussehen:

  
SELECT  
  ueberschrift, text  
FROM  
  Test  
WHERE  
  anfang < NOW() AND NOW() < ende  
 ORDER BY RAND()  
 LIMIT 1  

HTH.

再见,
克里斯蒂安

--
89,7% aller Statistiken sind frei erfunden!