mysql: feld aus datenbank für datumsfunktion verarbeiten?
susi
- datenbank
0 Vinzenz Mai0 susi
hallo,
ich hab in einem feld einen int wert welcher mir sagt wann ein gewinnspiel abgelaufen ist! und nun wollte ich ...
UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL lg.end DAY)) verwenden!
also... einen feldwert als interval verwenden nur bekomm ich immer NULL zurück!
gibt es eine möglichkeit dies so zu realisieren oder nicht?
lg, susi
Hallo
ich hab in einem feld einen int wert welcher mir sagt wann ein gewinnspiel abgelaufen ist!
das halte ich für schlechtes Tabellendesign. Verwende ein DATETIME-Feld, der ideale Datentyp, um Datums- und Zeitangaben in einer Datenbank zu speichern.
UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL lg.end DAY)) verwenden!
ich verstehe Deinen Ansatz nicht. Was soll das bewirken?
gibt es eine möglichkeit dies so zu realisieren oder nicht?
Es gibt solch tolle Vergleichsoperatoren wie "kleiner als" und "größer als". Warum verwendest Du nicht diese?
Freundliche Grüße
Vinzenz
Hallo
ich hab in einem feld einen int wert welcher mir sagt wann ein gewinnspiel abgelaufen ist!
das halte ich für schlechtes Tabellendesign. Verwende ein DATETIME-Feld, der ideale Datentyp, um Datums- und Zeitangaben in einer Datenbank zu speichern.
das hab ich auch gemacht! in einem feld steht ein datum und in einem weiteren die anzahl der tage an denen das gewinnspiel vor dem enddatum abläuft!
lg, susi
Hallo
das hab ich auch gemacht! in einem feld steht ein datum und in einem weiteren die anzahl der tage an denen das gewinnspiel vor dem enddatum abläuft!
Lesetipp: Tipps für Fragende
Bei Fragen zu Datenbankabfragen (SQL-Statements) ist es in aller Regel eine gute Idee, die relevanten Tabellen mit den relevanten Spalten vorzustellen, mit ein paar Beispieldatensätzen sowie dem gewünschten Resultat - und der Begründung (im Klartext, nicht in SQL), warum dieses das gewünschte Resultat ist.
Ich versuchs mal an einem Beispiel:
Tabelle gewinnspiel
ablaufzeit | enddatum
---------------------------------
10 | 2008-04-26 12:00:00
8 | 2008-04-20 00:00:00
Nun liefert Dir
SELECT -- Gib mir
enddatum, -- das Enddatum
ablaufzeit, -- und den Ablaufzeitraum in Tagen
-- sowie den daraus resultierenden Ablaufzeitpunkt
DATE_SUB(enddatum, INTERVAL ablaufzeit DAY) ablaufzeitpunkt
FROM
gewinnspiel
die Ablaufzeitpunkte der diversen Gewinnspiele
Willst Du nun überprüfen, ob der Ablaufzeitpunkt bereits vorbei ist, so nutze die entsprechende WHERE-Klausel. Beachte, dass Du Aliasnamen nicht in der WHERE-Klausel verwenden kannst.
SELECT
enddatum,
ablaufzeit,
DATE_SUB(enddatum, INTERVAL ablaufzeit DAY) ablaufzeitpunkt
FROM
gewinnspiel
WHERE
-- wobei der Ablaufzeitpunkt zum jetztigen Zeitpunkt bereits verstrichen ist.
DATE_SUB(enddatum, INTERVAL ablaufzeit DAY) < NOW()
Freundliche Grüße
Vinzenz