# "Heute" in vorhandenen timestamps suchen



## goisgo (16. Juli 2007)

Hallo Community,

ich habe die undankbare Aufgabe eine Selection in einer MySQL (4.0.25) Datenbank vorzunehmen. Es sind alle Einträge auszuwählen, deren Spalte "Eintragsdatum" (ein timestamp) dem heutigen Datum entsprechen. Die Einträge, die in der TABLE vorliegen, wurden via PHP ausgeführt ($jetzteintrag = time())......

Problem also (für mich):
Heute == 17.07.2007 00:00:00 bis 23:59:59 Uhr

Suche alle Datensätze, deren timestamp im Feld "Eintragsdatum" in das Datum passen.

Geht dies mit einem MySQL Statement, oder muss ich das Problem mit PHP lösen - da es PHP auch verursacht hat?

LG,
Peter


----------



## melmager (16. Juli 2007)

Welchen Typ ist dein Datumsfeld ?


----------



## goisgo (17. Juli 2007)

Type var(10). Der timestamp wird via php (time()) eingefügt.

LG,
Peter


----------



## Dr Dau (17. Juli 2007)

Hallo!

Ich würde mit mktime() den Start- und Endzeitpunkt berechnen und dann im Query zwischen diesen Zeitpunkten mit BETWEEN suchen.

Gruss Dr Dau

[edit]
Ähm, das Datumsfeld sollte schon vom Typ INT sein.
[/edit]


----------



## goisgo (17. Juli 2007)

Danke für die Antwort.
Allerdings wollte ich es direkt über einen DB-Select lösen. Über PHP würde ich einfach den Datenbankwert (timestamp) mit $test = date("d.m.Y",$daten['dbeintrag']) und dem heute = $heute = date("d.m.Y",time()); vergleichen und dadurch den output steuern. 
Ja, der var(10) macht wenig Sinn.

LG,
Peter


----------



## deepthroat (17. Juli 2007)

Hi,

Du könntest die Funktion UNIX_TIMESTAMP und CURDATE verwenden:

```
select * from xyz where
row between UNIX_TIMESTAMP(CURDATE()) and UNIX_TIMESTAMP(CURDATE()) + 24 * 60 * 60;
```

Gruß


----------



## goisgo (17. Juli 2007)

Hm. DANKE !

Genau das habe ich gesucht / gebraucht - Thx alot.

LG,
Peter


----------



## SeeKing (18. Juli 2007)

Du hättest auch einfach statt INT oder VARCHAR den Spaltentyp DATETIME nehmen können. Dann hättest du einfach mit TO_DAY([datum]) arbeiten können. Im übrigen MySQL macht dir in diesem fall automatisch aus dem Timestamp von PHP das DATETIME - Format.

Brauchst also deine Scripte nicht anfassen.

Gruss
MixTer


----------



## deepthroat (18. Juli 2007)

Hi.





ps-mixter hat gesagt.:


> Du hättest auch einfach statt INT oder VARCHAR den Spaltentyp DATETIME nehmen können. Dann hättest du einfach mit TO_DAY([datum]) arbeiten können.


Verwechselst du da evtl. irgendwas, denn bei mir gibt es keine to_day Funktion.

Gruß


----------



## SeeKing (18. Juli 2007)

deepthroat hat gesagt.:


> Hi.Verwechselst du da evtl. irgendwas, denn bei mir gibt es keine to_day Funktion.
> Gruß



UPS du hast recht ^^ Die hab ich mir mal selber geschrieben ein Stored Procedure... weil sowas ähnliches hatte ich auch mal.... 

Hab nur schnell die SQL gesucht und die "Funktion" kopiert. Dabei übersehen, dass des keine Native MySQL ist. Ich poste morgen aber mal den Code zu dem Ding bin leider schon daheim und hab keinen zugriff auf das Entwicklungssystem.

Die Funktion macht nichts anderes wie die Timestamps in Tage umzuwandeln (Tage ab beginn der Unixepoche). Diese kannst du dann einfach von einander abziehen und wenn 0 rauskommt ist es "heute" ^^

Gruss
MixTer


----------

