Projekt

Allgemein

Profil

Aktionen

Fehler #30

geschlossen

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

Von Bernd Bleßmann vor etwa 10 Jahren hinzugefügt. Vor etwa 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."

Aktionen #1

Von Sven Schöling vor etwa 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.

Aktionen #2

Von Bernd Bleßmann vor etwa 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.

Aktionen

Auch abrufbar als: Atom PDF