Von Timestamp nur Uhrzeit abfragen

Hi,

ich habe in einer MySQL-DB Termine bei denen das Datum/ Uhrzeit als
PHP-Timestamp abgelegt ist. Nun möchte ich alle Termine Abfragen, bei
denen die Uhrzeit z.B. gleich 7:00 Uhr ist. Kann man eine solche
Bedingung in eine SQL-Abfrage einbauen? Wenn ja - wie?

MfG
Dirk Einecke
Dirk Einecke [ Sa, 04 Februar 2006 16:13 ] [ ID #1172891 ]

Re: Von Timestamp nur Uhrzeit abfragen

"Dirk Einecke" <dirk.einecke [at] gmx.de> schrieb:

> ich habe in einer MySQL-DB Termine bei denen das Datum/ Uhrzeit als
> PHP-Timestamp abgelegt ist. Nun möchte ich alle Termine Abfragen, bei
> denen die Uhrzeit z.B. gleich 7:00 Uhr ist. Kann man eine solche
> Bedingung in eine SQL-Abfrage einbauen? Wenn ja - wie?

Tja, was heißt PHP-Timestamp bei dir?

Wenn das ganze eine Spalte vom Typ DATETIME wäre, ginge es (ungetestet)
ungefähr so:

SELECT * FROM tabelle WHERE TIME(datetimecol) = '07:00:00'

tabelle ist der Name der Tabelle in der DB, datetimecol ist der
Spaltenname der Spalte, in der Datum/Uhrzeit als DATETIME drinstehen.

--
( ROT-13 if you want to email me directly: uvuc [at] ervzjrexre.qr )
"Sie tragen Trauer? Der Untergang der DDR?" - "Nein, Leni Riefenstahl.
Der Führer hat sie zu sich genommen." -- Abschiedsshow Scheibenwischer,
02.10.2003
Holger Pollmann [ Sa, 04 Februar 2006 16:52 ] [ ID #1172892 ]

Re: Von Timestamp nur Uhrzeit abfragen

Hi,

Holger Pollmann schrieb:
> Tja, was heißt PHP-Timestamp bei dir?

Also sowas: 1139046719 ... das was bei <?php echo time(); ?>
herauskommt.

> Wenn das ganze eine Spalte vom Typ DATETIME wäre, ginge es (ungetestet)
> ungefähr so:

Die Spalte ist aber vom Typ int(11) - daran kann ich auch nichts
ändern. Habe ich leider nicht gemacht und keinen Einfluß darauf.

MfG
Dirk Einecke
Dirk Einecke [ Sa, 04 Februar 2006 20:31 ] [ ID #1172893 ]

Re: Von Timestamp nur Uhrzeit abfragen

"Dirk Einecke" <dirk.einecke [at] gmx.de> schrieb:

>> Tja, was heißt PHP-Timestamp bei dir?
>
> Also sowas: 1139046719 ... das was bei <?php echo time(); ?>
> herauskommt.

Also ein Unix-Timestamp. Sach das doch :-)

>> Wenn das ganze eine Spalte vom Typ DATETIME wäre, ginge es
>> (ungetestet) ungefähr so:
>
> Die Spalte ist aber vom Typ int(11) - daran kann ich auch nichts
> ändern. Habe ich leider nicht gemacht und keinen Einfluß darauf.

Okay, dann probier mal folgendes:

SELECT * FROM tabelle
WHERE FROM_UNIXTIME(TIME(datetimecol)) = '07:00:00'

--
( ROT-13 if you want to email me directly: uvuc [at] ervzjrexre.qr )
"Sie tragen Trauer? Der Untergang der DDR?" - "Nein, Leni Riefenstahl. Der
Führer hat sie zu sich genommen." -- Abschiedsshow Scheibenwischer,
02.10.2003
Holger Pollmann [ Sa, 04 Februar 2006 20:41 ] [ ID #1172894 ]

Re: Von Timestamp nur Uhrzeit abfragen

Hi,

Holger Pollmann schrieb:
> Okay, dann probier mal folgendes:
>
> SELECT * FROM tabelle
> WHERE FROM_UNIXTIME(TIME(datetimecol)) =3D '07:00:00'

mh. ... da bekomme ich kein Ergebnis. Kann man sich den Wert von
datetimecol auch irgendwie in dem Format wie in der WHERE-Klausel
ausgeben lassen damit man mal sieht ob man auch auf den richtigen Wert
prüft?

MfG
Dirk Einecke
Dirk Einecke [ Sa, 04 Februar 2006 21:17 ] [ ID #1172895 ]

Re: Von Timestamp nur Uhrzeit abfragen

"Dirk Einecke" <dirk.einecke [at] gmx.de> schrieb:

>> Okay, dann probier mal folgendes:
>>
>> SELECT * FROM tabelle
>> WHERE FROM_UNIXTIME(TIME(datetimecol)) = '07:00:00'
>
> mh. ... da bekomme ich kein Ergebnis.

Und zurecht. Ich Blödtrollel hab die Reihenfolge vertauscht. Also
nochmal:

SELECT * FROM tabelle
WHERE TIME(FROM_UNIXTIME(datetimecol)) = '07:00:00'

--
( ROT-13 if you want to email me directly: uvuc [at] ervzjrexre.qr )
"Sie tragen Trauer? Der Untergang der DDR?" - "Nein, Leni Riefenstahl.
Der Führer hat sie zu sich genommen." -- Abschiedsshow Scheibenwischer,
02.10.2003
Holger Pollmann [ Sa, 04 Februar 2006 22:35 ] [ ID #1172896 ]

Re: Von Timestamp nur Uhrzeit abfragen

Holger Pollmann schrieb:
> "Dirk Einecke" <dirk.einecke [at] gmx.de> schrieb:
>
>
>>>Okay, dann probier mal folgendes:
>>>
>>> SELECT * FROM tabelle
>>> WHERE FROM_UNIXTIME(TIME(datetimecol)) = '07:00:00'
>>
>>mh. ... da bekomme ich kein Ergebnis.
>
>
> Und zurecht. Ich Blödtrollel hab die Reihenfolge vertauscht. Also
> nochmal:
>
> SELECT * FROM tabelle
> WHERE TIME(FROM_UNIXTIME(datetimecol)) = '07:00:00'
>

Nur der Hinweis das sowas einen Fulltablescan braucht und bei
entsprechender Anzahl an Datensaetzen ein Performancekiller ist.

Desweiteren ist die Frage in der Newsgroup nicht ganz ONTOPIC da es hier
um reines (MY)SQL geht.

Gruss
Joerg
Joerg Behrens [ Sa, 04 Februar 2006 23:53 ] [ ID #1172898 ]

Re: Von Timestamp nur Uhrzeit abfragen

Joerg Behrens schrieb:
> Holger Pollmann schrieb:

>> SELECT * FROM tabelle
>> WHERE TIME(FROM_UNIXTIME(datetimecol)) = '07:00:00'
>
> Nur der Hinweis das sowas einen Fulltablescan braucht und bei
> entsprechender Anzahl an Datensaetzen ein Performancekiller ist.

Das ist der Preis für kaputtes DB-Design.

> Desweiteren ist die Frage in der Newsgroup nicht ganz ONTOPIC da es hier
> um reines (MY)SQL geht.

ACK.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----
Niels Braczek [ So, 05 Februar 2006 00:20 ] [ ID #1172899 ]

Re: Von Timestamp nur Uhrzeit abfragen

Hi,

Holger Pollmann schrieb:
> SELECT * FROM tabelle
> WHERE TIME(FROM_UNIXTIME(datetimecol)) =3D '07:00:00'

Genau so geht es!
Vielen Dank für die Unterstützung.

MfG
Dirk Einecke
Dirk Einecke [ So, 05 Februar 2006 00:30 ] [ ID #1173744 ]
PHP » de.comp.lang.php.datenbanken » Von Timestamp nur Uhrzeit abfragen

Vorheriges Thema: SELECT mit Datensätzen in definierbarer Reihenfolge
Nächstes Thema: while -> mysql_assoc