Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich habe in einer Tabelle eine Spalte für ein Datum, das anhand der Eingabekomponente $CMS_INPUT_DATE$ mit mode="date" gewählt wird.
Die Spalte in der Tabelle habe ich als "FIRSTspirit-Editor" angelegt (weil im Falle von mode="date" der Datentyp "Date" nicht zur Verfügung steht).
Nun möchte ich per contentSelect eine Abfrage durchführen, die mir alle Einträge von heute liefert:
<CMS_FUNCTION name="contentSelect" resultname="fs_events">
<CMS_PARAM name="schema" value="Events" />
<CMS_VALUE_PARAM name='now' value='#global.now' />
<QUERY entityType="Event">
<FILTERPARAM parameter="now" datatype="???"/>
<EQ attribute="date" parameter="now"/>
</QUERY>
</CMS_FUNCTION>
Wie muss die Abfrage aussehen, damit sie funktioniert?
Alternativ habe ich auch versucht das Datum als "long" anzulegen, aber hier ist die Abfrage immer null, weil der Wert von #global.now (in Millisekunden) nicht mit meinem Wert aus der Tabelle übereinstimmt, obwohl es dasselbe Datum ist (ich nehme an, dass die Uhrzeiten unterschiedlich gesetzt sind?).
Wie löse ich das nun am besten?
Vielen Dank und viele Grüße,
Jacky
Hallo Jacky,
wenn der Datentyp date beim mapping nicht zur Verfügung steht, dann bedeutet dies, dass als mode entweder date oder time gewählt wurde.
Ich tippe mal auf date (also nur der Tag ist auswählbar).
Als Speicherformat würde ich long benutzen.
Als Vergleichswert dann #global.now.set("hour",0).set("minute",0).set("second",0).set("millisecond",0) [also heute um Mitternacht]
Gestern wäre somit #global.now.set("hour",0).set("minute",0).set("second",0).set("millisecond",0).plus(-1000*60*60*24)
und morgen das selbe ohne das Minuszeichen
Viele Grüsse aus Dortmund,
Holger
Warum steht denn der Datentyp Date nicht zur Verfügung? Finde ich merkwürdig, denn auch wir haben hier solche Konstrukte:
<CMS_INPUT_DATE name="cs_erscheinungsdatum" convertEntities="standard" hFill="yes" mode="date" useLanguages="no">
<LANGINFOS>
<LANGINFO lang="*" label="Erscheinungsdatum"/>
</LANGINFOS>
</CMS_INPUT_DATE>
Daten-Schema:
Das funktioniert tadellos und dann kann man bei der Abfrage auch datatype="java.util.Date" einsetzen.
Grüße
Marcus
Das steht so in der Dokumentation bei der Eingabekomponente CMS_INPUT_DATE -> mode:
Ich konnte das Datum beim Mapping auch nur auswählen, wenn ich dieses mit Datentyp "long" oder FIRSTspirit-Editor angelegt habe.
Ich habe es nun so gelöst, dass ich den mode="date" erst nach dem Mapping gesetzt habe. Jetzt kann ich mit datatype="java.util.Date" arbeiten.
Vielen Dank.
Grüße,
Jacky
Hallo Jacky,
wenn der Datentyp date beim mapping nicht zur Verfügung steht, dann bedeutet dies, dass als mode entweder date oder time gewählt wurde.
Ich tippe mal auf date (also nur der Tag ist auswählbar).
Als Speicherformat würde ich long benutzen.
Als Vergleichswert dann #global.now.set("hour",0).set("minute",0).set("second",0).set("millisecond",0) [also heute um Mitternacht]
Gestern wäre somit #global.now.set("hour",0).set("minute",0).set("second",0).set("millisecond",0).plus(-1000*60*60*24)
und morgen das selbe ohne das Minuszeichen
Viele Grüsse aus Dortmund,
Holger
Hallo Jacky,
Jacky schrieb:
Ich habe es nun so gelöst, dass ich den mode="date" erst nach dem Mapping gesetzt habe. Jetzt kann ich mit datatype="java.util.Date" arbeiten.
keine gute Idee. Das WIRD zu Folgeproblemen führen (spätestens bei der nächsten Zeitumschaltung)
Viele Grüsse aus Dortmund,
Holger
Vielleicht haben wir bei der Anlage des Schemas erst einen anderen mode verwendet. Aber zumindest klappt es so bei uns! Spannend.
Hallo Holger,
es ging genau darum, dass ich mode="date" gewählt hatte und nun nur die Wahl zwischen Datentyp "FIRSTspirit-Editor" und "long" hatte.
Die Abfrage funktioniert nun, vielen Dank .
An den Vergleichswert musste ich noch ein .getTime() anhängen, um die Millisekunden zu erhalten.
Viele Grüße,
Jacky