[Frage hier] - Wie erstellt man einen Cast, was genau bewirkt ein Cast?

Kampfgummibaerlie

Datenbank-Guru
Beiträge
728
Soda, ich komme auch heute noch soweit, dass ich beim selbst regergieren darüber gestolpert bin, dass es Casts gibt, welche ich selbst (aus einem anderen SQL-Programm) als "Umwandler" kenne, was Informationen aus dem Internet bestätigt haben.

Ich frage mich nur, wieso es mir nicht gelingen möchte :(

Ich erstelle eine Function, mit den entsprechenden Typen, die ich "umwandeln" möchte, und versuche dann den Cast zu erstellen...... Ich wollte eigentlich nur nett umwandeln von der Timestamprange_diff die Sekunden zu Minuten, und die Minuten durch 10 dividieren zwecks einbauen n den Mietpreis.

Also wollte ich an sich über die Functon die range_diff durch 60 dividieren, und als Minuten "ausgeben".

Könnte ja auch andere interessieren, deshalb frage ich hier ;)

Ich weiß, dass ein Cast 2-3 "Argumente" braucht, Quelltyp, Zieltyp, und eine 3., die ich aber nichtmehr weiß, was es war, ist nicht verpflichtend zu vergeben, kann man aber.

Bearbeitung:
Ist es möglich mittels eines Casts auch nur in das Date-Zeug in Form von "DD:MM" machen, und mit diesem Typ in einem Check arbeiten, damit man nicht jedes Jahr die fixen Feiertage (Neujahr, Weihnachten, Silvester, fallen mir jetzt nicht alle ein) als Check in Form von:

Code:
ALTER TABLE Vermietungen add CHECK (DATE(Lower (Mietzeit)) != '1.1.18', .......)

sondern entsprechend sozusagen über 1 Cast und 1 Check alle fixen Feiertage herausfiltert, und nurnoch die variablen eintippen muss (Ostern zB)?
 
Zuletzt bearbeitet:
Werbung:
CAST's dienen dazu, Datentypen umzuwandeln. Das kann sinnvoll sein, um mit bestimmten Dingen rechnen zu können.

Code:
test=*# select ('1.1.2017'::text)::date + '1day';
FEHLER:  Operator ist nicht eindeutig: date + unknown
ZEILE 1: select ('1.1.2017'::text)::date + '1day';
  ^
TIP:  Konnte keinen besten Kandidatoperator auswählen. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.
test=*# select ('1.1.2017'::text)::date + '1day'::interval;
  ?column?   
---------------------
 2017-01-02 00:00:00
(1 Zeile)

test=*#
 
Zurück
Oben