susi: mysql: feld aus datenbank für datumsfunktion verarbeiten?

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

  1. 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

    1. 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

      1. 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