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

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

[
Zuletzt geändert von Daniel_Berlin am Sa 13. Jun 2020, 17:39, 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 »

Ist da bei Values ein Komma zuviel ? Was heisst ohne Erfolg ?

Gibt es eine Fehlermeldung vom Server ?
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 »

Sorry, das Komma ist Zuviel. Das n meinen Quelltext und noch mehr valide, beim kopieren nicht gelöscht.

Es gibt keine Fehlermeldung. Programm läuft durch
In der Datenbank steht leider null als value

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 »

Wenn du einen Breakpoint auf die Zeile mit dem Zuweisen des Parameters setzt, welcher Wert steht dann in stringLieferzeitpunkt und lieferzeitpunkt drinnen.

Ausserdem stimmt da was an der Reihenfolge nicht

Code: Alles auswählen

Form2.SQLQuery1.ParamByName('sqllieferzeit').AsTime := lieferzeitpunkt;
 Form2.SQLQuery1.Params.CreateParam(ftTime, 'sqllieferzeit', ptInput);
Zuerst Zuweisen, dann erzeugen ?!
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 »

Da war wirklich ein Zeilendreher drin, habe ich angepasst.

Wenn ich einen Haltepunkt auf dienZuweisung setzen, bekomme ich die Fehlermeldung:
Projekt x hat Exception External SIGFPE ausgelöst.

Bernie110
Beiträge: 120
Registriert: Mo 10. Feb 2020, 17:43

Re: Datum Uhrzeit MySQL

Beitrag von Bernie110 »

Hi mal so Off-Topic,

warum legst du dir nicht einfach eine Datumstabelle an, in welcher du alle Datumsrelvanten Daten schreibst:
Das Gleiche kann man auch für eine Uhrzeit machen.

Beispiel :
TBL STAMM_Datum :
Name Wert
DATE_ID Autowert
DATE_DATE DATE wirklich als Datum speichern
DATE_Text Datum als Text speichern
diese Daten kannst du dann einmal berechnen
DATE_Month Monat
DATE_WEEK Kalenderwoche
DATE_YEAR das Jahr
DATE_WEEKDAY zb. Sonntag
usw... theoretisch lassen sich dann alle Datumsformate dort abspeichern. egal welches.

Wenn ich nun in meine Tabelle Aufträge z.b. ein Auftragsdatum eingebe, dann speichere ich nur den WERT DATE_ID in diese Tabelle.
Rufe ich nun den Auftrag auf, dann hol ich mir die ganzen Daten aus der Tabelle anhand der DATE_ID.
.
Keine Ahnung ob man das so machen darf, aber ich mach das schon immer so.. erspart einem diesen ganzen Umformatierungsschmarren welchen man an verschieden Stellen immer wieder neu machen muss :mrgreen: .
Nur so ne Idee ;-)
Lg Bernie

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

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Ich will das schon wie nach dem vorherigen Beispiel machen.
Habt ihr noch Ideen?

Bernie110
Beiträge: 120
Registriert: Mo 10. Feb 2020, 17:43

Re: Datum Uhrzeit MySQL

Beitrag von Bernie110 »

Daniel_Berlin hat geschrieben:
Di 9. Jun 2020, 16:49
Ich will das schon wie nach dem vorherigen Beispiel machen.
Habt ihr noch Ideen?
Warum nimmst du nicht ein TTimeEdit ( Findest du im Reiter Misc) anstelle des Combo / Editi Dingsen,
Damit kannst du auch die Zeit auswählen und musst nichts umformatieren. Versteh mich nicht falsch du kannst machen wie du es möchtest. ;-)
Zudem würde ich dir auch ein TDateEdit empfehlen.
Ein Lieferzeitpunkt besteht meines Erachtens immer aus 3 Feldern.
1. LieferDatum = TDateEdit
2. Lieferzeit_von = TTimeEdit
3. Lieferzeit_bis = TTimeEdit

Das sind wirklich geeignete Felder. Und für den User sind sie m.M. nach auch gut zu handhaben,.
Anschließende Berechnungen sind ohne viel Formatierung drin.

Der Insert sieht dann so aus :

Code: Alles auswählen

           SQLQuery1.SQL.Clear;
          SQLQuery1.SQL.Add('INSERT INTO DEINETABELLE (LieferDatum, Lieferzeit_von, Lieferzeit_bis )');
          SQLQuery1.SQL.Add(' VALUES ( :LieferDatum, :Lieferzeit_von, :Lieferzeit_bis ) ;' );

          SQLQuery1.ParamByName('LieferDatum').AsDate := LieferDatum.Date;
          SQLQuery1.ParamByName('Lieferzeit_von').AsTime := Lieferzeit_von.Time;
          SQLQuery1.ParamByName('Lieferzeit_bis').AsTime := Lieferzeit_bis.Time;

          SQLQuery1.ExecSQL;
          SQLTransaction1.Commit; 
Aber erklär mal warum du es unbedingt so machen möchtest ? Stell mir das halt umständlich vor.

Lg Bernie

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

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

der Lieferzeitpunkt besteht nur aus Datum und Uhrzeit, keine Zeitspanne.
Ich würde das auch erstmal so lassen.
Zuletzt geändert von Daniel_Berlin am Sa 13. Jun 2020, 17:40, insgesamt 1-mal geändert.

Bernie110
Beiträge: 120
Registriert: Mo 10. Feb 2020, 17:43

Re: Datum Uhrzeit MySQL

Beitrag von Bernie110 »

Jaein.
kommt vermutlich drauf an wie du es machst.

Mach das Sinn ? Volle Stunden in diesem Format darzustellen ? (01:00:00 etc) :?:
Verstehe ich nicht. Dann rechne doch gleich mit Zahlen. 1-24 fertig.
Gibt auch hierfür ein cooles Edit Feld. TSpinEdit... findest du auch unter Misc.
Da kannst Min und Max Werte gleich mit angeben.
Das kannst du dann auch als TinyInt oder als Int im SQL abspeichern.

Code: Alles auswählen

SQLQuery1.ParamByName('Lieferzeit').AsInteger := Lieferzeit.Value;
Lg Bernie

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

Re: Datum Uhrzeit MySQL

Beitrag von Daniel_Berlin »

Ich lass das jetzt erstmal als Edit Feld, da es so funktioniert und ich erstmal weitermachen kann

Antworten