[TYPO3-german] Re: wie handelt Extbase das Y2K38-Problem?

2015-03-12 Diskussionsfäden Harald Stanzel

okay...

PHP_INT_MAX ist 2147483647 = 2^31-1
PHP Version 5.3.8

in sql ist das dann die max_int_signed 
max_bigint_unsigned  =  18446744073709551615 =  2^64 -1

max_bigint_signed  = 9223372036854775807  = 2^63 -1
usw...

Scheint, als könne mysql mit 64 Bit umgehen, aber mein PHP nicht :/
___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Re: [TYPO3-german] wie handelt Extbase das Y2K38-Problem?

2015-03-12 Diskussionsfäden Harald Stanzel

Hallo zurück,

laut de2.php.net/manual/de/intro.datetime.php hat DateTime 64 Bit. Mir würden 
schon 32 reichen, wenn nicht über die Hälfte davon für die Sekunden eines 
einzigen Tages drauf gehen würden.
Ich hab hier drei Dinge:
PHP, Mysql und dazwischen Extbase. Wie ich bisher verstanden habe, kennen PHP 
und Mysql 64Bit lange Datetime.

Problem 1: int(11) ist mit Sicherheit zu klein, Maximalwert 2^31 - den hat mir 
der Ext.Builder gemacht.
Allein die Angabe von int(20), welcher dann +/- 2^63 könnte, funktioniert aber 
nicht.
Denn der Wertebereich bleibt der selbe.

Problem 2: Ändere ich diesen int(11) auf Date oder DateTime funktioniert gar 
nichts mehr (NULL-Value in beide Richtungen,d.h. phpmyadmin zeigt -00-00 
und mein FE zeigt 1.1.1970)

Deswegen schlussfolgere ich, daß beim Property mappen oder sonstwo in den 
Untiefen von Extbase IMMER ein timestamp aus dem Datum generiert wird. Und bei 
diesem ist bekannt, daß am 19.1.2038 das Ende erreicht wird.

Problem 3: Ich habe nicht die leiseste Ahnung, wo und nach was ich noch suchen 
sollte.

Gruß
Harald
___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Re: [TYPO3-german] wie handelt Extbase das Y2K38-Problem?

2015-03-11 Diskussionsfäden Harald Stanzel

Beide Daumen hoch! :)

Wer lesen kann, ist klar im Vorteil ;)
Mit 'dbType' und nicht 'db_type' funktioniert's !

Vom 1.1.1000 bis 31.12. getestet. 


Kannst du bei der Gelegenheit bitte gleich mal prüfen, ob sowohl dein MySQL als 
auch dein PHP 64bit sind...?

Wollte ich schon lang mal...
WO find ich das denn?!

Wegen "default => time()" schau ich grad mal ins BE und sehe...
beim Anlegen einer neuen Person, steht der Datepicker auf 'heute'.
Der ist allerdings begrenzt auf 1901-2038, d.h. er zeigt zwar an, daß er 
beliebieg weit hoch und runter kann (sogar in negative Jahreszahlen), übernimmt 
aber keine Werte außerhalb.

Na, wenigstens scheint mein Problem gelöst zu sein. Da kann ich schon mal 
beruhigt zu Bett gehen ;)
Danke, bis dann!
Harald

___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Re: [TYPO3-german] wie handelt Extbase das Y2K38-Problem?

2015-03-11 Diskussionsfäden Harald Stanzel

Hallo Stephan,


Die Frage klingt jetzt vielleicht blöd, aber hattest du nur den Datenbankanteil 
umgestellt der auch dein TCA geändert?

http://docs.typo3.org/typo3cms/TCAReference/Reference/Columns/Common/Index.html#dbtype

Du solltest
* im TCA "eval" auf "date" stellen
* im TCA "dbType" auf "date"
* in der ext_tables.sql das Feld auf "date"


Auf deine Frage: Ich glaub, ich hatte es schonmal so ausprobiert. Soweit ich 
weiß, ist TCA nur fürs Backend zuständig.
Weil ich meine Eingaben aber im FE mache, denk ich, tut es nichts zur Sache.
Aber zur Sicherheit hab ich das grad nochmal nachgeschaut...

In Configuration/TCA/Person.php steht unter columns:
'birth_date' => array(
'exclude' => 0,
'label' => 
'LLL:EXT:familytree/Resources/Private/Language/locallang_db.xlf:tx_familytree_domain_model_person.birth_date',
'config' => array(
   'db_type' => 'date',
   'type' => 'input',
   'size' => 7,
   'eval' => 'date',
   'checkbox' => 1,
   'default' => time()
),
),

In der ext_tables.sql lautet die entsprechende Stelle 
CREATE TABLE tx_familytree_domain_model_person (

  ...
birth_date date DEFAULT '-00-00' NOT NULL, ...);

Und nach dem Test, was dabei passiert, stoße ich wieder auf das unter Problem2 
genannte :
NULL-Value in beide Richtungen,d.h. phpmyadmin zeigt -00-00 und wenn ich 
das dort editier, zeigt mein FE 1.1.1970 (sonst nichts)

:(
___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Re: [TYPO3-german] wie handelt Extbase das Y2K38-Problem?

2015-03-11 Diskussionsfäden Harald Stanzel

Hmmm...

also das Format ist mir eigentlich relativ egal. 
Was ich brauch, ist eine diskrete eindimensionale Abbildung der Zeit. Ich brauch das nicht vierdimensional, ich brauch keine Zeit abhängig vom Ort. Für meinen Geburtstag spielt es keine Rolle, ob ich in Los Angeles, in Peking oder auf dem Mars geboren wurde. Die Uhrzeit würde ich - wenn überhaupt - als schmückendes Beiwerk, wie den Geburtsort betrachten. Ich brauch eigentlich nur "Date".


Ob mein Datum in der Form 1425992664 oder 2015-03-11 gespeichert wird, ist mir 
so lang wie hoch.
Ich hab auch kein Problem, die Uhrzeit einfach zu ignorieren, wenn sie meint, 
trotzdem dabei sein zu wollen.

Ich versuch, meine Probleme neu zu formulieren:

1. Der Wertebereich von 1901-2038 ist mir zu klein. Das trifft zu für +/- 2^31 
... signed int(11)

2. Verwende ich andere Typen (mysql-seitig getestet, php-seitig den DateTime 
belassen) tut gar nichts mehr. (*)

Und weiter:
Es erscheint mir logisch, daß es komplizierter wird, je mehr Technologien ich 
verwende.
Deswegen hab ich es bisher so einfach wie möglich gehalten.
Ich verwende (noch) kein Javascript. Javascript kommt erst, wenn alles andere 
tut.


(*)"solltest du auf eine echte Datumsrepräsentation umsteigen (die
Datenbanken haben einen eigenen Datentyp dafür!) kommen aber schnell
andere Probleme auf"

..und zwar, daß dann gar nichts mehr tut. Die PHP-Seite weiß dann noch lange 
nicht, wie sie korrekt mit Mysql kommunizieren soll.
Das Problem ist (laut meiner Erkenntnis), daß da immer ein timestamp erwartet 
wird.
Ich habe Datetime ausprobiert. PHP-seitig ist das (z.B. "2015-03-11") aber dann immer 
gleich null (=0  ="1.1.1970")

Je länger ich über dieses Problem grüble, umso vernünftiger scheint mir die 
Realisierung als String. Ich dachte nur, das runde Rad sei schon erfunden und 
ich müsste nicht mit meinem N-Eck fahren (bildlich gesprochen).

Gruß
Harald
___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

[TYPO3-german] wie handelt Extbase das Y2K38-Problem?

2015-03-10 Diskussionsfäden Harald Stanzel

Hallo wertes Forum und Mitglieder,

ich habe mit dem ExtensionBuilder eine kleine Extension gekickstartet, in der 
Personendaten und Familienverhältnisse abgespeichert werden mit dem Ziel 
Stammbäume darzustellen.
Eine Person hat außer Vor-, Zu- und sonstige Namen noch einen Geburtstag und 
(eventuell, früher oder später) einen Todestag.

Im Ext.Builder habe ich dafür "Date" gewählt. Im Model erhalte ich damit 
DateTime und die entsprechende DB-Spalte wird zu
int(11) DEFAULT '0' NOT NULL
Das funktioniert auch soweit - solange ich im Bereich 1901-2038 bleibe.
Gebe ich im FE ein Datum drüber oder drunter ein, wird das Maximum, bzw. 
Minimum abgespeichert.

Nun möchte ich gern wissen, ob und wie Extbase mit Datumsangaben vor 1901 / 
nach 2038 umgeht oder wie ich das deichseln kann, damit es tut.
Leider hat meine bisherige Suche nur ergeben, daß das Problem mehr oder weniger 
bekannt ist. (Nochmal) leider hab ich bisher keine Lösung dazu gefunden.

Gruß
Harald


___
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german