Datum Uhrzeit MySQL

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Hallo,

ich habe ein Edit Feld indem ich ein Datum und eine Uhrzeit eintragen will, im besten Fall als dd.mm.yyyy hh:mm:ss
Leider habe ich keinen erfolg. ich wäre auch mit yyyy-mm-dd hh:mm.ss zufrieden.
Zuletzt geändert von Daniel_Berlin am Fr 5. Jun 2020, 00:05, insgesamt 1-mal geändert.

TraumTaenzerDieter
Beiträge: 28
Registriert: So 14. Aug 2011, 09:11

Re: Datum Uhrzeit MySQL

Beitrag von TraumTaenzerDieter »

Für Inserts / Updates per SQL formatiere ich einen DateTime-Wert mit

dt := quotedstr(FormatDateTime('yyyy-mm-dd hh:nn:ss', datumUhrzeit));
Form2.SQLQuery1.SQL.Text := 'INSERT INTO test (endzeitpunkt) VALUES (' + dt + ')';
und dann
Form2.SQLQuery1.ExecSQL

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Datum Uhrzeit MySQL

Beitrag von af0815 »

Daniel_Berlin hat geschrieben:
Do 4. Jun 2020, 12:00
procedure TForm3.ButtonSpeichernClick(Sender: TObject);
var
stringEndzeitpunkt : string;
stringA : TDateTime;
begin
stringA:= EditEndzeitpunkt.Text;
stringA := StrtoDateTime(stringEndzeitpunkt);

Form2.connectDB;

Form2.SQLQuery1.SQL.Text := 'INSERT INTO test (endzeitpunkt) VALUES (''+stringA+''')';
Form2.closeDB;
Ich verstehe nicht, das jeder auf den Stringgefrickel herumreitet. Wenn das Feld in der DB ein Datetime ist gehts mit Parametern typensicher.

Code: Alles auswählen

procedure TForm3.ButtonSpeichernClick(Sender: TObject);    
 var  
stringEndzeitpunkt : string;
dtA :  TDateTime;
begin
      stringEndzeitpunkt := EditEndzeitpunkt.Text;
      dtA := StrtoDateTime(stringEndzeitpunkt);        

 Form2.connectDB;
 Form2.SQLQuery1.Active := false;
 Form2.SQLQuery1.Clear;
try
 Form2.SQLQuery1.SQL.Text := 'INSERT INTO test (endzeitpunkt) VALUES (:sqldta)';
 Form2.SQLQuery1.Params.CreateParam(ftDateTime, 'sqldta', ptInput);
 Form2.SQLQuery1.ParamByName('sqldta').AsDateTime := dtA; 
 Form2.SQLQuery1.ExecSQL;
except
 on E:Exception do begin
    Debugln({I %FILE% + '->' + {I %CURRENTROUTINE%} + ' Exception =>'+ E.Message);
 end;
end; 
....
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Ich hab jetzt mal deinen Quellcode genommen, jetzt bekomme ich aber die Fehlermeldung:
Identifier not found ftDateTime
und
Identifier not found ptInput

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Datum Uhrzeit MySQL

Beitrag von af0815 »

Dir fehlt in den uses DB (reicht normaerweise im implementationsteil)

Bei google einfach lazarus createparam eingegeben und als 3ten Eintrag

https://www.freepascal.org/docs-html/cu ... param.html

gefunden. Und dort gibt es den Hinweis auf db.pas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Datum Uhrzeit MySQL

Beitrag von Socke »

Daniel_Berlin hat geschrieben:
Do 4. Jun 2020, 13:20
Ich hab jetzt mal deinen Quellcode genommen, jetzt bekomme ich aber die Fehlermeldung:
Identifier not found ftDateTime
und
Identifier not found ptInput
Bitte die Unit DB in die uses-Klausel aufnehmen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

sorry, hatte gerade noch was zu tun.

Hat super funktioniert. :)

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Das hat super funktioniert, aber jetzt hab ich mit der Einstellung ein kleines anderes Problem:
Der folgende Befehl funktioniert nur, wenn in dem Feld Endzeitpunkt es drin steht, wenn es leer ist bekomm ich die Meldung " '' is not a valid date format"
Die Else if Bedingung funktioniert, nur der erste Teil bereitet schwierigkeiten
Zuletzt geändert von Daniel_Berlin am Fr 5. Jun 2020, 00:05, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Datum Uhrzeit MySQL

Beitrag von af0815 »

was willst da machen? Das sieht aus als wäre es wild zusammengeklickt.

Einmal update, einmal insert. Im insert einen Fehler drinnen, so das der nicht funktionieren kann. In dem einen Zweig ein ConnectDB im anderen nicht. Zusätzlich ein stringA der boolean ist. Wie wird der zugewiesen?

Meine Glaskugel ist momentan trübe. Kannst du mehr vom Code zeigen, nicht das man alles Erraten muss, was du wirklich willst.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Ich gebe dir mal meinen ganzen Code, dort sind die Variablen aber anders. Ich wollte einen gekürzten Code bereitstellen, damit es übersichtlicher wird.
StringA entspricht strinOrderNeu und wird auf true gesetzt, wenn ein Button geklickt wird.
es geht um die procedure ButtonSpeichernClick
Zuletzt geändert von Daniel_Berlin am Fr 5. Jun 2020, 13:33, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Datum Uhrzeit MySQL

Beitrag von af0815 »

Du hast im Code folgendes:

Code: Alles auswählen

 IF (stringOrderNeu = false) THEN
 begin
  Form2.connectDB;
  Form2.SQLQuery1.SQL.Text := 'Update kauforder SET endzeitpunkt = current_timestamp(), stornierzeitpunkt = current_timestamp(), ist_ausgefuehrt = "0" WHERE order_id ='''+stringOrder_ID+''';';
  Form2.SQLQuery1.Params.CreateParam(ftDateTime, 'current_timestamp', ptInput);
  Form2.SQLQuery1.ParamByName('current_timestamp').AsDateTime := endzeit;
  Form2.closeDB;
Das Problem ist, das du current_timestamp nicht als Parameter in dem SQL-Text definierst, sondern als eine interne Funktion des Servers.

Code: Alles auswählen

 IF (stringOrderNeu = false) THEN
 begin
  Form2.connectDB;
  Form2.SQLQuery1.SQL.Text := 'Update kauforder SET endzeitpunkt = :SQLendzeitpunkt , stornierzeitpunkt = :SQLstornierzeitpunkt , ist_ausgefuehrt = "0" WHERE order_id =:SQLOrderID;';
  Form2.SQLQuery1.Params.CreateParam(ftDateTime, 'SQLendzeitpunkt ', ptInput);
  Form2.SQLQuery1.ParamByName('SQLendzeitpunkt ').AsDateTime := endzeit;
  Form2.SQLQuery1.Params.CreateParam(ftDateTime, 'SQLstornierzeitpunkt ', ptInput);
  Form2.SQLQuery1.ParamByName('SQLstornierzeitpunkt ').AsDateTime := endzeit;
  Form2.SQLQuery1.Params.CreateParam(ftString, 'SQLOrderID', ptInput);
  Form2.SQLQuery1.ParamByName('SQLOrderID').AsString := stringOrder_ID;
  Form2.closeDB;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Super. das hat geklappt.
Zuletzt geändert von Daniel_Berlin am Fr 5. Jun 2020, 13:37, insgesamt 2-mal geändert.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Datum Uhrzeit MySQL

Beitrag von sstvmaster »

Daniel_Berlin hat geschrieben:
Fr 5. Jun 2020, 00:02
...

Code: Alles auswählen

 IF (comboMarktteilnehmer.Text ='Müller') THEN
    Begin
     stringMarktteilnehmer:='1';
    end
    else IF (comboMarktteilnehmer.Text ='Meier') THEN
    Begin
    stringMarktteilnehmer:='2';
    end
    ELSE IF (comboMarktteilnehmer.Text ='Lehmann') THEN
    Begin
     stringMarktteilnehmer:='3';
    end
    ELSE IF (comboMarktteilnehmer.Text ='Schmidt) THEN
    Begin
    stringMarktteilnehmer:='4';
    end;
...
Du kannst das auch so machen:

Code: Alles auswählen

  case comboMarktteilnehmer.Text of
    'Müller': stringMarktteilnehmer:='1';
    'Meier': stringMarktteilnehmer:='2';
    'Lehmann': stringMarktteilnehmer:='3';
    'Schmidt': stringMarktteilnehmer:='4';
  { // zur Sicherheit kann man hier auch mit else einen anderen Wert schreiben wenn keine Übereinstimmung gefunden wurde.
  else
    stringMarktteilnehmer:='0';
  }
  end;
Das ist dann übersichtlicher.
Zuletzt geändert von sstvmaster am Sa 13. Jun 2020, 19:26, insgesamt 1-mal geändert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Super. das hat geklappt.
Zuletzt geändert von Daniel_Berlin am Fr 5. Jun 2020, 13:37, insgesamt 2-mal geändert.

Daniel_Berlin
Beiträge: 37
Registriert: So 31. Mai 2020, 21:13

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

alles wieder gut :)

Antworten