Projekt

Allgemein

Profil

Fehler #30

SL::DB::Helpers::Attr as_date funktioniert nicht mit now()

Von Bernd Bleßmann vor fast 10 Jahren hinzugefügt. Vor fast 10 Jahren aktualisiert.

Status:
Gelöst
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
-
Beginn:
25.01.2015
Abgabedatum:
% erledigt:

100%

Geschätzter Aufwand:

Beschreibung

as_date SL::DB::Helpers::Attr kann mit 'now' umgehen, aber nicht mit 'now()'. So ist z.B. SL::DB::Order->new->itime = 'now()' und SL::DB::Order->new->itime_as_date liefert den Fehler: "Runtime error: Can't locate object method "ymd" via package "now()" (perhaps you forgot to load "now()"?) at SL/DB/Helper/Attr.pm line 94."

Zugehörige Revisionen

Revision b9d2f814 (diff)
Von Bernd Bleßmann vor fast 10 Jahren hinzugefügt

SL::DB::Helpers::Attr as_date geht jetzt auch mit 'now()'.

Ein neu-angelegtes Rose-DB-Objekt mit einer Spalte mit einem
Datums-Default-Wert 'now' liefert 'now()' für diese Methode. Z.B.:
SL::DB::Order->new->itime = 'now()'. Jetzt geht damit z.B.:
SL::DB::Order->new->itime_as_date

Behebt #30 (redmine).

Historie

#1

Von Sven Schöling vor fast 10 Jahren aktualisiert

Hab ich mir angeschaut Bernd. Ja, ich habe das damals als Sonderfall eingebaut um genau das abzufangen, und ja, wahrscheinlich ist Dein Fix korrekt.

Zur Erklärung:

Das mit dem Defaultwert für date Spalten in sql ist sone Sache, das macht jede Datenbank anders. Bevorzugt in Postgres ist:

DEFAULT now() --
DEFAULT CURRENT_DATE -- was ein Alias für now() + Cast zu Date ist.

In alten Upgradescripten hat Simader oft

DEFAULT 'now'

benutzt, was, soweit ich das sehen kann, für alte Versionen von Postgres durchaus der Weg war das hinzukriegen. Dafür war mein Sonderfall. Beim auslesen wird das mittlerweile als

DEFAULT ('now'::TEXT)::DATE

ausgegeben, was auch zeigt was intern damit passiert.

MySQL zum Beispiel kann garkeine der obigen Syntaxen, das braucht

DEFAULT CURRENT_TIMESTAMP

... weil NOW und CURRENT_DATE Funktionen ist, CURRENT_TIMESTAMP aber nicht. Bäh.

#2

Von Bernd Bleßmann vor fast 10 Jahren aktualisiert

  • Status wurde von Neu zu Gelöst geändert
  • % erledigt wurde von 0 zu 100 geändert

Status geändert durch Changeset kivitendo-erp|commit:b9d2f81497c6ff60be298ed1e7697c0c6a4316fa.

Auch abrufbar als: Atom PDF