You are not logged in.

  • Login

1

Sunday, October 9th 2011, 1:35am

SQL Befehl Uhrzeit umwandeln(USA/Deutschland)

hey
also es ist ein relativ einfaches problem ich finde jedoch keine lösung
und zwar möchte ich nach der uhrzeit daten aus meiner datenbank abfragen. da aber mein server in amerika liegt ist dor eine zeitverschiebung von 6 stunden wenn ich in der abfrage nun

SQL Code

1
WHERE Zeit >= CURTIME()+TIME('06:00:00')
verwende wird es ab 19 uhr in amerika kritisch weil ich dann auf 25 uhr komme was ja falsch ist wie kann ich das problem umgehen
danke

2

Sunday, October 9th 2011, 11:01am

Hi,
keine Angst, auf 25 Uhr wirst du nicht kommen, MySQL geht natürlich automatisch auf den nächsten Tag.

Ansonsten ist für deine Problematik der Typ der Spalte entscheidend! Datetime oder Timestamp?

3

Sunday, October 9th 2011, 11:34am

hey also als datentype hab ich TIME genommen die abfrage müsste so eigentlich auch funktionieren das einzigste was ich sehe wos dran liegen könnte wäre genau diese sache weil es komischerweise immer bis genau 19 uhr geht dann nicht mehr und ab 0 uhr (also hier 6 uhr morgens) geht wieder alles einwandfrei

4

Sunday, October 9th 2011, 12:03pm

Ah, du hast eine eigene Spalte für die Stunde.
Zum debuggen empfehle ich dir übrigens die MySQL Konsole

SQL Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SELECT TIME('13:00:00') > CURTIME() + TIME('00:00:01');
+-----------------------------------------------+
| TIME('13:00:01') > CURTIME() + TIME(':00:00') |
+-----------------------------------------------+
|                                             1 |
+-----------------------------------------------+
1 row IN SET (0.00 sec)
 
mysql> SELECT TIME('13:00:00') > CURTIME() + TIME('12:00:00');
+-------------------------------------------------+
| TIME('13:00:01') > CURTIME() + TIME('12:00:00') |
+-------------------------------------------------+
|                                               0 |
+-------------------------------------------------+
1 row IN SET (0.00 sec)


Aber zurück zum Thema:
Wenn dein Client in Deutschland ist, dann solltest du entweder die Zeitzone für die Connection überschreiben.
Oder aber du fügst mit einer Programmiersprache die Stunde direkt ins Query ein (anstatt CURTIME() zu verwenden)

5

Sunday, October 9th 2011, 12:39pm

okay erstmal vielen dank ich glaub das ändern der zeitzone wäre noch das leichtere wie geh ich bei sowas sry wenn ich so doof frag aber ich finde nichts dazu was es mir verständlich erklärt

6

Sunday, October 9th 2011, 5:44pm

Willst du die Zeitzone je nach Client variieren oder willst du einfach die Zeit des Servers umstellen?

Wenn du die Zeitzone auf Connection Basis ändern willst, geht das so:

SQL Code

1
SET time_zone = 'America/Los_Angeles';


Das solltest du direkt nach dem Verbindungsaufbau machen.
Lg

7

Sunday, October 9th 2011, 6:45pm

hey also will am liebsten wenns geht die zeit vom server umstellen weil die zeiten die da drinne stehen sich auch auf hier beziehen also is nen tv programm und da will ich natürlich zur richtigen zeit auch die richtige sendung haben und nicht um 17 sehen was bereits um 13 gelaufen ist

8

Monday, October 10th 2011, 1:07pm

Aber bei einem TV Programm macht TIMESTAMP (also Uhrzeit + Datum) doch viel mehr Sinn, oder?
TIMESTAMP ist wie im Wiki Artikel erläutert gesagt ein Zeitpunkt:

Timestamp=10.10.20011 13:10, Server=DE/Berlin
Wenn ich JETZT aus DE/Berlin auf meine Uhr schaue, dann tritt dieser Zeitpunkt in 5 Minuten ein.
Wenn ich JETZT US/Ney York auf die Uhr schaue, dann tritt dieser Zeitpunkt erst in 5 Minuten ein. (auch wenn meine Uhr etwas anderes sagt)

Datetime=10.10.20011 13:10, Server=DE/Berlin
Wenn ich JETZT aus DE/Berlin auf meine Uhr schaue, dann tritt dieser Zeitpunkt in 5 Minuten ein.
Wenn ich JETZT US/Ney York auf die Uhr schaue, dann tritt dieser Zeitpunkt erst in 6h + 5 Minuten ein.

Social bookmarks