# date("Y.m.d") minus einen Tag also gestern



## patator (20. September 2004)

hallo, 
habe eine Tabelle für nen Userzähler der unter anderem pro IP den Tag als Typ Datum in die  mysql Datenbank speichert.
Um die User für den laufenden Tag zu ermitteln geh ich nach dem Tagesdatum, nun möchte ich aber aktuelles Tagesdatum minus 1 Tag um zu ermitteln wieviele gestern da waren.

Wie erreiche ich es mit date("Y.m.d") einen Tag vom Tagesdatum abzuziehen:
Bsp. 2004.09.20 minus 1 = 2004.09.19

Bitte um Antwort


----------



## Gumbo (20. September 2004)

Hast du dir schon mal die Beschreibung des zweiten Parameters der date()-Funktion angesehen? Mit ein paar mathematischen Kenntnissen sollte dieses „Problem“ keins mehr sein.


----------



## Johannes Postler (20. September 2004)

```
$tag = date("d");
$tag -= 1;
$variable = $tag.".".date("m.Y");
```

Probier mal, ich glaube so sollte das funktionieren.


----------



## patator (20. September 2004)

*Danke das war die Lösung*

vielen Dank, wenigstens einer der Hilft.
http://www.patator.de


----------



## Gumbo (20. September 2004)

Autsch, bevor man von fehlerhaften Beispielen abschreibt, hier ist eine Lösung:
	
	
	



```
date('Y.m.d', time()-(60*60*24));
```
Der (60*60*24) Ausdruck kann selbst verständlich auch durch 86400 ersetzt werden, doch der Erklärung wegen habe ich es detailiert geschrieben.


----------



## Sven Petruschke (20. September 2004)

@Johannes Postler: Fein, also ist der Tag vor Neujahr der 0. Januar?


----------



## Johannes Postler (20. September 2004)

:-(  Äh, nein.
Daran hatte ich in der Eile gar nicht gedacht...
Danke für die Korrektur.


----------



## patator (7. Oktober 2004)

jetzt hab ich ein weiteres problem, wenn ich von "d" also tagesnummer des monats der z.b. 07 ist -1 mache erhalte ich einstellig 6, wobei ich wieder irgendwie die führende 0 dazubekommen müsste um meine abfrage für meinen besucherzähler der gestrigen besucher abzufragen.
hat jemand ne idee nach der subtraktion die führende null bei einstelligen ziffern wiederherzustellen?


----------



## Centrepiece (7. Oktober 2004)

Hey!
Du kannst zum Beispiel den Tag getrennt vom Monat und vom Jahr per date() abfragen und dann mit folgender Kontrolle bearbeiten:

```
if($tag<10){$tag = "0".$tag;}
```
Hoffe, es hilft dir weiter.
Gruß,
Centrepiece


----------



## Marvin Schmidt (7. Oktober 2004)

```
SELECT <spalten>
FROM <tablle>
WHERE <datumsspalte> = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
```

Die Spalte, die das Datum enthält sollte vom Typen DATE(TIME) sein.


----------



## Tim C. (7. Oktober 2004)

patator hat gesagt.:
			
		

> jetzt hab ich ein weiteres problem, wenn ich von "d" also tagesnummer des monats der z.b. 07 ist -1 mache erhalte ich einstellig 6, wobei ich wieder irgendwie die führende 0 dazubekommen müsste um meine abfrage für meinen besucherzähler der gestrigen besucher abzufragen.
> hat jemand ne idee nach der subtraktion die führende null bei einstelligen ziffern wiederherzustellen?


 Wenn du einfach mal die Methode von Gumbo verwenden würdest, und dich an unsere Netiquette bezüglich korrekter Groß-/Kleinschreibung halten würdest, hättest du zwei Probleme weniger.


----------



## XXdynastieXX (3. Juni 2008)

vergisst was ich geschrieben hab^^ argh


----------



## Loomis (3. Juni 2008)

```
$datum_aus_datenbank = '03.06.2008';
echo date( 'd.m.Y', strtotime( '+1 month', strtotime( $datum_aus_datenbank ) ) );
```

//edit: Wieso vergessen, vielleicht brauch jemand anders sowas


----------



## XXdynastieXX (3. Juni 2008)

Loomes hat gesagt.:


> ```
> $datum_aus_datenbank = '03.06.2008';
> echo date( 'd.m.Y', strtotime( '+1 month', strtotime( $datum_aus_datenbank ) ) );
> ```
> ...



Weil meine Frage völlig irrsinnig war .Ich wollte wissen wie ich das Datum aus der DB kriege, aber ist völlig unnötig denn mein Vorhaben soll ja vom heutigen Datum 30-31 Tage zurückzählen und da reicht ja einfach nur date()

Habs übrigens so gemacht


```
$datum =  date("d.m.Y");
	$monat = 2678400; /* Der Monat in Sekudnen */
	$datum_letzte31tage = date("d.m.Y",(strtotime("now")-$monat));
```


----------

