Problem mit Datum und Zeit

Problem mit Datum und Zeit

am 11.09.2006 10:39:06 von benjamin235

Hallo Leute!

Ich hab mal wieder ein Problem. Ich denke ich hab auch nur ein Brett
vorm Kopf und deshalb check ich es nicht. Also hier mal mein Problem:

Ich habe in einer DB 2 Spalten. Eine Spalte mit dem aktuellen Datum
(angegeben z.B. 2006-09-11) und die Spalte Time (angegeben z.B.
00:00:07). Ich will jetzt immer genau eine Stunde mehr angegeben haben.
Das hab ich mal so versucht:


Code:
SELECT ROUND(mydb.test.DATE * 1000000 + mydb.test.TIME) -
(ROUND(mydb.test.DATE * 1000000 + mydb.test.TIME) % 1000) as tmstmp
FROM mydb.test WHERE mydb.test.TYPE =3D "Request" GROUP BY tmstmp;


Leider bekomme ich als Ergebnis nicht das was ich haben will. Es sollte
eigentlich so aussehen: z.B. 20060911070000 für eben 7:00 Uhr am
11.09.2006. Ich bekomme aber immer dieses Ergebnis: z.B. 20060911000000
für eben 7:00 Uhr am 11.09.2006.

Was genau mach ich denn falsch? Die Berechnung ist doch richtig, oder?
Danke schonmal für euere Hilfe!

Gruß Buba

PS: Das ganze ist MySQL!

Re: Problem mit Datum und Zeit

am 11.09.2006 10:41:49 von Sven Paulus

Benjamin Maus wrote:
> Was genau mach ich denn falsch?

Du liest nicht einfach im Handbuch das huebsche Kapitel (12.5 in 4.1)
ueber die Datums-Funktionen und machst es dann richtig?

Re: Problem mit Datum und Zeit

am 11.09.2006 16:37:18 von Gregor Kofler

Benjamin Maus meinte:

> Code:
> SELECT ROUND(mydb.test.DATE * 1000000 + mydb.test.TIME) -
> (ROUND(mydb.test.DATE * 1000000 + mydb.test.TIME) % 1000) as tmstmp
> FROM mydb.test WHERE mydb.test.TYPE = "Request" GROUP BY tmstmp;
>
Glglgl.

> Leider bekomme ich als Ergebnis nicht das was ich haben will. Es sollte
> eigentlich so aussehen: z.B. 20060911070000 für eben 7:00 Uhr am
> 11.09.2006. Ich bekomme aber immer dieses Ergebnis: z.B. 20060911000000
> für eben 7:00 Uhr am 11.09.2006.

Urgs.

> Was genau mach ich denn falsch? Die Berechnung ist doch richtig, oder?
> Danke schonmal für euere Hilfe!

Es gibt spezielle Datumsfunktionen in (My)SQL. Bitte im Manual durch*lesen*.

(Ein Datum ist *kein* Integer (deshalb gibt's dafür unterschiedliche
Datentypen)... Und eine Million-Sekunden sind kein Tag.)

Gregor

> P.S: Das ganze ist MySQL!

Na immerhin passt die NG.


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Problem mit Datum und Zeit

am 11.09.2006 19:44:39 von Thomas Rachel

Benjamin Maus wrote:

> Ich habe in einer DB 2 Spalten. Eine Spalte mit dem aktuellen Datum
> (angegeben z.B. 2006-09-11) und die Spalte Time (angegeben z.B.
> 00:00:07).

Immer noch? Ich dachte, die wolltest Du zusammenfassen zu einer Spalte
DATETIME?

ALTER TABLE ... ADD COLUMN zeitpunkt DATETIME [NOT NULL];
UPDATE ... SET zeitpunkt=ADDTIME(concat(`DATE`," ",`TIME`),"0") -- oder
meinetwegen auch SET zeitpunkt=`DATE`*1000000+`TIME`


> Ich will jetzt immer genau eine Stunde mehr angegeben haben.
> Das hab ich mal so versucht:
>
>
> Code:
> SELECT ROUND(mydb.test.DATE * 1000000 + mydb.test.TIME) -
> (ROUND(mydb.test.DATE * 1000000 + mydb.test.TIME) % 1000) as tmstmp
> FROM mydb.test WHERE mydb.test.TYPE = "Request" GROUP BY tmstmp;

Warum hast Du das so versucht? Daß MySQL entsprechende Funktionen für die
Behandlung von Datum und Zeit hat, weißt Du - das war vor kurzem noch Thema
in einem von Dir initiierten Thread.

Mit Deiner Methode fällst Du spätestens beim Tageswechsel auf die Nase.


> Was genau mach ich denn falsch? Die Berechnung ist doch richtig, oder?

Du nutzt nicht die entsprechenden Funktionen, die Dir im Thread "Frage zu
INSERT" ans Herz gelegt wurden.


Thomas
--
Das ist *MEINE* Signatur!