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