Jacky
I'm new here

contentSelect mit einem Datum und mode="Date"

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

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 Smiley Wink

Viele Grüsse aus Dortmund,

  Holger

View solution in original post

0 Kudos
6 Replies
MarcusDau
Occasional Collector

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:

dau_290.jpg

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:

http://www.e-spirit.com/odfs42/de/vorlagenentwicklung/formular/cmsinput/cms_input_date/date.html#s0_...

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

0 Kudos
hoebbel
Crownpeak employee

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 Smiley Wink

Viele Grüsse aus Dortmund,

  Holger

0 Kudos
hoebbel
Crownpeak employee

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

0 Kudos
MarcusDau
Occasional Collector

Vielleicht haben wir bei der Anlage des Schemas erst einen anderen mode verwendet. Aber zumindest klappt es so bei uns! Spannend.

0 Kudos

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 Smiley Happy .

An den Vergleichswert musste ich noch ein .getTime() anhängen, um die Millisekunden zu erhalten.

Viele Grüße,

Jacky

0 Kudos