Vinzenz Mai: Vortag

Beitrag lesen

Hallo,

Datenbankmanagementsystem (DBMS) nutzt Du?

[X] MySQL
Ganz bestimmt hat Dein DBMS nette Zeichenketten und Umwandlungsfunktionen, die
das für Dich erledigen.

dem ist so (MySQL 4.1.1 oder neuer ...)

STR_TO_DATE in Verbindung mit dem geeigneten Format. Die Formate findest Du
bei DATE_FORMAT, was Dir ja bereits gesagt wurde. Soweit ich das sehe, sollte
das kein Problem sein.

Für den Monat nimmst Du entweder %b oder %M. Leider ist der aktuelle Monat der
einzige Monat im Jahr, für den diese beiden die gleiche Ausgabe liefern :-)

Nach dem Umwandeln kannst Du bequem mit DATE_SUB() den Vortag ermitteln,
danach mit DATE_FORMAT die gewünschte Ausgabe erzeugen:

Beispiel: '12-January-2007 14:08:03'
Daraus folgt für den Format-String: '%d-%M-%Y %H:%i%s'

SELECT  
    STR_TO_DATE(  
        '12-January-2007 14:08:03',       -- deine Datumszeichenkette  
        '%d-%M-%Y %H:%i:%s'               -- das passende Format  
    )

wandelt die Zeichenkette in einen Datumswert um.

SELECT                     -- Vortag:  
    DATE_SUB(                             -- Subtrahiere vom  
        STR_TO_DATE(                      -- in einen Datumswert  
            '12-January-2007 14:08:03',   -- umgewandelte String  
            '%d-%M-%Y %H:%i:%s'  
        ),  
        INTERVAL 1 DAY                    -- einen Tag  
    )

liefert nun den Vortag und mit DATE_FORMAT kannst Du diesen Tab nach
Belieben formatiert ausgeben, beispielsweise im gleichen Format wie
die Ausgangsdaten:

SELECT  
    DATE_FORMAT(                          -- Formatiere  
        DATE_SUB(                         -- den Vortag  
            STR_TO_DATE(  
                '12-January-2007 14:08:03',  
                '%d-%M-%Y %H:%i:%s'  
            ),  
            INTERVAL 1 DAY  
        ),  
        '%d-%M-%Y %H:%i:%s'               -- wie benötigt  
    )

Wenn es den gehen würde, ^^ ist ne Vorgabe die ich leider nicht ändern darf.

Das ist eine untaugliche Vorgabe! Wer diese gemacht hat, hat von Datenbanken
keine Ahnung oder nur gefährliches Halbwissen.

Freundliche Grüße

Vinzenz