Feld mit Wert füllen

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Feld mit Wert füllen

Beitrag von Jan »

Hallo,

drei Anfängerfragen dazu, per UPDATE einen Wert in ein Feld zu schreiben:

1) Wie schreibe ich die aktuelle Zeit da rein? Kein kompletter Timestamp.
2) Wie schreibe ich das aktuelle Datum da rein? Kein kompletter Timestamp.
3) Wie baue ich eine Variable in die SQL-Anweisung rein? Will sagen: Ich habe vorher im Xbase++-Code irgend welche Werte zsuammen gestellt und in eine LOCAL geschrieben, und will den Wert jetzt in das SQL-Feld schreiben

Wobei das natürlich auch als WHERE oder FOR in der SELECT-Anweinsung interssant wäre, aber da funktioniert das dann vermutlich ähnlich bis glich.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Feld mit Wert füllen

Beitrag von georg »

Hallo, Jan -


das ist recht spezifisch für den jeweiligen Server, was die beiden ersten Fragen angeht.

Wenn Du mit PostGre arbeitest, könnte das: https://www.tutorialspoint.com/postgres ... ntdatetime helfen, d.h. CURRENT_TIME und CURRENT_DATE.

Bezüglich Frage 3:

Code: Alles auswählen

cSelect := "UPDATE table SET kundennummer = " + XToC(nKundNum) + " WHERE datum = " + XToC(dDatum)
Ausführen. Bei MySQl verwende ich eine Methode der MySQL-Klasse von Hector, die das übernimmt, da werden z.B. auch Anführungszeichen etc. gesetzt:

Code: Alles auswählen

INLINE METHOD XToSQL(xValue)
   Local cType, cOut

   cType := ValType(xValue)

   DO CASE
   CASE cType = "C" .OR. cType = "M"
      cOut := "'" + Trim(self:RealEscapeString(xValue)) + "'"
   CASE cType = "N"
      cOut := Str(xValue)
   CASE cType = "D"
      cOut := "'" + Str(Year(xValue), 4) + "-" + Str(Month(xValue), 2) + "-" + Str(Day(xValue), 2) + "'"
      cOut := StrTran(cout, " ", "0")
   CASE cType = "L"
      cOut := IIF(xValue, "1", "0")
   OTHERWISE
   ENDCASE
RETURN (cOut)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Feld mit Wert füllen

Beitrag von Jan »

Hallo Georg,

ja, hier geht es um PostgreSQL. Und Danke für die Hinweise. Ein wenig rumprobieren mit den diversen Konstanten, und schon klappt das.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Feld mit Wert füllen

Beitrag von Marcus Herz »

Code: Alles auswählen

update table set datum = current_date, zeit = cuurrent_time, timestamp = current_timestamp where ... 
Es gibt auch verdammt viele Datumsfunktionen, sehr praktisch
https://www.postgresql.org/docs/current ... etime.html
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Feld mit Wert füllen

Beitrag von Marcus Herz »

wenn ich längere oder umfangreichere SQL erstellen muss, find ich das sehr hilfreich:

Code: Alles auswählen

TEXT INTO SQL TRIMMED
select ..
from table
where kdnr = :KDNR and ort = ':ORT'
ENDTEXT
cSql	:= strtran( cSql, ":KDNR", str(4711))   // numerisch einfügen
cSql	:= strtran(cSql, ":ORT", "Regensburg )
Das ist jedenfalls sehr lesbar
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten