[TYPO3-german] CONTENT select Problem (TYPO3 7.6)

Johannes C. Laxander jc at laxander.com
Sat Jun 4 14:31:51 CEST 2016


Hallo Peter,

danke für deinen "erleuchtenden" Tipp, manchmal bin ich zu verbohrt in eine
Sache, und vergesse das Naheliegende...

Ich bin also deinem Rat gefolgt. Die SQL-Abfragen bestätigen im Prinzip das,
was ich schon beschrieben habe.
Die Abfrage mit "<=" liefert kein Ergebnis, die mit ">=" liefert das
richtige Ergebnis.

ABER:
Ich bin immer davon ausgegangen, dass UNIX_TIMESTAMP("2016-06-24 00:00:00")
als UTC 0 Wert zurückgegeben wird.
Das tut es aber nicht. In der MySQL Doku steht:

The server interprets date as a value in the current time zone and converts
it to an internal value in UTC.

Daraufhin habe ich mir UNIX_TIMESTAMP("2016-06-24 00:00:00") ausgeben lassen
und bekomme: 1466719200!
Dieser Wert entspricht UTC +2.

Soweit meine Erkenntnisse. Jetzt habe ich aber keinen Plan wie ich mein
Problem löse.
Das Datum aus der Datenbank (event_date) ist vorgegeben und entspricht UTC
0.
Wie kann ich also in meiner SQL-Abfrage event_date in einen Wert
konvertieren, der die Server- / MySQL-Einstellung
für die time zone berücksichtigt?

Das ist meine aktuelle where-Klausel:
where = event_date > UNIX_TIMESTAMP('2016-06-01 00:00:00') AND event_date <=
UNIX_TIMESTAMP('2016-06-24 00:00:00')


Johannes.

> bounces at lists.typo3.org] Im Auftrag von Peter Linzenkirchner
> Gesendet: Samstag, 4. Juni 2016 11:06
> 
> ich schalte in so einem Fall das Sql-Debugging in TYPO3 an (lasse mir also
> fehlerhafte DB-Abfragen ausgeben). Danach baue ich absichtlich einen
> Fehler in meine Abfrage ein, z. B. einen falschen Feldnamen. Dann wird mir
> die ganze SQL-Abfrage im Frontend ausgegeben. So müsstest du dann
> eigentlich sehen können, was falsch ankommen. Bzw. du kannst es direkt
> auskopieren, den selbst eingebauten Fehler ausbessern und in phpMyAdmin
> absenden.
> 
> Gruß
> Peter
> 
> 
> 
> > Am 03.06.2016 um 18:03 schrieb Johannes C. Laxander <jc at laxander.com>:
> >
> >
> > Mein aktueller Status: ich bin verzweifelt und langsam am
> > Durchdrehen... ;)
> >
> > Ich habe nochmal etwas getestet: Bei dem folgenden Vergleich sollte
> > genau ein Datensatz gefunden werden der in datum1 den Wert
> > "1466726400" hat (entspricht 2016-06-24 00:00:00 UTC 0).
> >
> > where = datum1 > UNIX_TIMESTAMP("2016-06-01 00:00:00") AND datum1
> <=
> > UNIX_TIMESTAMP("2016-06-24 00:00:00")
> > Dieser Vergleich findet keinen Datensatz!
> >
> > where = datum1 > UNIX_TIMESTAMP("2016-06-01 00:00:00") AND datum1
> <
> > UNIX_TIMESTAMP("2016-06-25 00:00:00")
> > Dieser Vergleich findet genau den einen (richtigen) Datensatz.
> >
> > Eigenartig, der Vergleichsoperator ">=" funktioniert in dieser Abfrage:
> > where = datum1 >= UNIX_TIMESTAMP("2016-06-24 00:00:00") AND
> datum1 <
> > UNIX_TIMESTAMP("2016-07-01 00:00:00")
> > Auch dieser Vergleich findet genau den einen (richtigen) Datensatz.
> >
> > Man könnte jetzt auf den Gedanken kommen, dass der Vergleichsoperator
> "<="
> > (kleiner oder gleich) von TypoScript irgendwie "verbogen" wird, was
> > ich eigentlich nicht glauben kann/will!?
> > Wenn das aber ausgeschlossen ist, wer kann mir dann bitte erklären
> > warum der Vergleich mit <= nicht funktioniert?
> >
> > Hier ist der komplette Code:
> >
> > myRecords = CONTENT
> > myRecords {
> >  table = mytable
> >  select {
> >    pidInList = 3
> >    orderBy = datum1
> >    selectFields = title,datum1
> >    where = datum1 > UNIX_TIMESTAMP("2016-06-01 00:00:00") AND
> datum1
> > <=
> > UNIX_TIMESTAMP("2016-06-24 00:00:00")
> >  }
> > }
> >
> > Wäre toll, wenn mir jemand weiterhelfen könnte, bevor ich die nächste
> > Eskalationsstufe erreiche... ;)
> >
> > Gruß, Johannes.
> >
> >
> >
> >>
> >> bin langsam am verzweifeln! :((
> >>
> >> Ich versuche über eine CONTENT Object News-Datensätze auszulesen,
> die
> >> über Tagesdatum und ein zweites Datum in der Zukunft selektiert
> >> werden sollen.
> >>
> >> Mit dieser SQL-Abfrage in phpMyAdmin bekomme ich die
> entsprechenden
> >> Datensätze:
> >>
> >> SELECT *  FROM `tx_news_domain_model_news` WHERE `datum1` >
> >> UNIX_TIMESTAMP(now()) AND `datum1` <= UNIX_TIMESTAMP("2016-06-
> >> 24")
> >>
> >> Übertragen in TypoScript sieht WHERE so aus:
> >>
> >> where = datum1 > UNIX_TIMESTAMP(now()) AND datum1 <=
> >> UNIX_TIMESTAMP("2016-06-24")
> >>
> >> Nur hier entspricht das Ergebnis nicht den angegebenen Bedingungen:
> >> es werden KEINE Datensätze geliefert!
> >> Eigentlich müsste der gleiche SQL-String auch hier funktionieren,
> >> oder
> > nicht?
> >> Was ist dann der Unterschied?
> >>
> >> Bei dieser Schreibweise
> >> where = datum1 > UNIX_TIMESTAMP("2016-06-01") AND datum1 <=
> >> UNIX_TIMESTAMP("2016-06-24")
> >>
> >> entspricht das Ergebnis dem wie bei der SQL-Abfrage in phpMyAdmin.
> >>
> >> Mit einem Marker habe ich es auch schon versucht, das Ergebnis war
> >> aber auch hier falsch.
> >>
> >> where = datum1 > UNIX_TIMESTAMP("###today###") AND datum1 <=
> >> UNIX_TIMESTAMP("2016-06-24")
> >>
> >> markers.today = TEXT
> >> markers.today.data = date: Y-m-d
> >>
> >> Wenn ich den Marker über page.9999 ausgebe, wird er so angezeigt:
> >> 2016-
> >> 06-01
> >> - eigentlich richtig!
> >>
> >> Ich verstehe es mittlerweile wirklich nicht mehr. Was mache ich falsch?
> >>
> >> Brauche Dringend Hilfe! Danke!
> >>
> >> Gruß, Johannes.
> >>
> >> _______________________________________________
> >> TYPO3-german mailing list
> >> TYPO3-german at lists.typo3.org
> >> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> >
> > _______________________________________________
> > TYPO3-german mailing list
> > TYPO3-german at lists.typo3.org
> > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german
> 
> 
> 
> --
> Xing: http://www.xing.com/profile/Peter_Linzenkirchner
> Web: http://www.typo3-lisardo.de
> Facebook: http://tinyurl.com/lisardo-multimedia
> 
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list