Zum Inhalt springen

Fehler 102 bei Eingabe Datensatz im Sysfolder

Erstellt am 25. November 2012 · 10 Antworten · letzte Antwort am 27. November 2012

Tags: Frage

mad1200 ·

Ich habe bei einer Extension ein Problem.
Sowie ich Im BE einen Datensatz im Sysfolder anlegen möchte bekomme ich beim Datum ein Problem.
102: These fields are not properly updated in database: (entry_date) Probably value mismatch with fieldtype.

Das Feld in der Db ist als Date deklariert mit default "0000-00-00"
In der tca.php steht folgendes :

'entry_date' => array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:extensionname/locallang_db.xml:tx_tabelle.entry_date',		
			'config' => array (
				 'type'     => 'input',
                'size'     => '12',
                'max'      => '20',
                'eval'     => 'date',
                'checkbox' => '0',
                'default'  => '0000-00-00',
			)
		),

Kann mir jemand weiterhelfen?

mad1200 ·

OK. Und der Wert in der Tabelle ist dann ein Timestamp?
Kann man den in mysql später abfragen mit FROM_UNIXTIME(wert) ?

LuP ·
mad1200 schrieb

OK. Und der Wert in der Tabelle ist dann ein Timestamp?

ja

mad1200 schrieb

Kann man den in mysql später abfragen mit FROM_UNIXTIME(wert) ?

Konvertierung machst Du anhand cObject und stdWrap. Ausgabeformat per TS konfigurieren. Schau mal in der TSRef nach strftime.

VG,
LuP

maxhb ·

Hi!

mad1200 schrieb

Und das mit dem Vergleich wird so nichts, da ich timestamps mit neg. Vorzeichen habe.

Ja, das ist natürlich ein problem, Timestamps gehen ja nur bis 1970 zurück...

Wenn Du im BE eine Eingebae der Form "YYYY-MM-DD" (also so, wie in MySQL) verwenden willst, dann solltest du unbedint eval => "date" aus Deiner TCA-Definition entfernen.

Leider unterstützt TYPO3 nativ keine MySQL-spezifischen Datentypen wie z.B. Date und Datetime.

CU
maxhb

maxhb ·

Hi!

mad1200 schrieb

Ich habe mein Problem inzwischen gelöst.

Freut mich! Dann wäre es toll, wenn Du die Lösung hier kurz darstellen könntest.

CU
maxhb

mad1200 ·
Select blablabla from tabelle AND DATEDIFF(CURDATE(), DATE_FORMAT( DATE_ADD( FROM_UNIXTIME( 0 ) , INTERVAL birthday
                                    SECOND ) ,  "%Y-%m-%d" )) /365 BETWEEN 41 AND 60  ';