Seite 1 von 1

Feld mit Wert füllen

Verfasst: Sa, 29. Mai 2021 12:41
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

Re: Feld mit Wert füllen

Verfasst: Sa, 29. Mai 2021 14:25
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)

Re: Feld mit Wert füllen

Verfasst: Sa, 29. Mai 2021 15:35
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

Re: Feld mit Wert füllen

Verfasst: Sa, 29. Mai 2021 17:15
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

Re: Feld mit Wert füllen

Verfasst: Sa, 29. Mai 2021 17:23
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