wenn im Feld n_von der 29.12.2018 bzw. 2018-12-29 steht, dann soll die News erst ab diesem Datum online erscheinen. Wenn im Feld n_bis der 31.01.2018 bzw. 2018-31-01 steht, soll die News am 01.01.2019 nicht mehr online erscheinen.
Eine News hat also das Datum 29.12.2018 - 31.1.2018 (n_von / n_bis) soll die News nur in diesem Zeit auch online zu sehen sein.
Wenn es um ein Datum(hier das aktuelle, DATE(NOW())), geht, dann brauchen wir das BETEWEEN nicht:
SELECT
n_id, n_code, n_titel, n_titel_url, n_news, n_bild, datum,
n_uhrzeit, n_status, n_von, n_bis
FROM
news
WHERE
n_status = 1
AND (
(
n_von <= DATE( NOW() )
AND n_bis >= DATE( NOW() )
)
OR n_bis = DATE( 0 )
)
ORDER by n_id DESC;
Beachte bitte, dass die Zeitangaben zonenabhängig sind. Probiere:
SET time_zone = "+00:00";
SELECT NOW();
SET time_zone = "+01:00";
SELECT NOW();
Das ist natürlich im ostpazifischen Raum interessanter als hier.
Wäre nicht besser, wenn die Felder leer wären wenn nicht eingetragen ist?
Wie ist denn Deine Tabelle angelegt?