Datum per SQL ist Falsch

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Buck_r
Beiträge: 7
Registriert: Mi, 13.01.2016 15:12

Datum per SQL ist Falsch

Beitrag von Buck_r » Mo, 14.08.2017 12:55

Hallo Gemeinde
ich versuche per SQL ein Datum in die Datenbank zu schreiben, was gelingt, aber das Datum ist flasch.
Es ist nicht 2017 sondern 2014!
Hat jemand eine Ahnung was ich Falsch mache?
Ich verwende Libre als frondend und Mysql als Backend.
Die Tabelle ist als Date formatiert.

Im Basic Editor beobachte ich die Variable RDatum, die den richtigen Datumswert anzeigt.
Also von Heute steht in der Variable 17.08.2017.
Jedoch in der Datenbank kommt 17.08.2014 an.

Oder gibt es eine bequemere Möglichkeit das Tages aktuelles Datum einzusetzen?


Habe den rest vom Makro natürlich nicht mit kopiert, sondern nur den Part worauf es ankommt.

Danke

Code

Code: Alles auswählen

Dim Rdatum as Date
Rdatum =Date()
 
'Iid = oForm.getByName(IidField).text


oDoc = ThisComponent
     'oForm = oDoc.drawpage.forms.getbyindex(0)
     oConnection = oForm.activeconnection
    SQL_Statement = oConnection.CreateStatement
     sSQL = "UPDATE `BestellDaten`Set `Rechnungs Datum`='"& Rdatum &_ 
     "'WHERE  `ID` ='"& iID &_
     "' AND `BestellDaten`.`Programmiert` <> 'nein' AND `BestellDaten`.`Geschachtelt` <> 'nein'"&_
     " AND `BestellDaten`.`Kommisioniert` = 'ja' AND `BestellDaten`.`LS Druck` = True AND"&_
     " `BestellDaten`.`Storno` = FALSE"
     SQL_Statement.executeUpdate(sSQL)


   oform = thisComponent.drawpage.forms.MainForm
   nID = iID
   oForm.Filter = "(""ID"" = '"+nID+"')"
   oForm.applyfilter = true
   oForm.reload

RobertG
*******
Beiträge: 1638
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datum per SQL ist Falsch

Beitrag von RobertG » Mo, 14.08.2017 20:59

Hallo Buch_r,

Du hast das Datum in Basic als DATE-Variable deklariert und dieser mit der Funktion Date() mit dem aktuellen Systemdatum versehen. Das Systemdatum, das in der DATE-Variablen schließlich steht, wird aber als DOUBLE (Zahl mit Nachkommastellen) in Basic gespeichert.

Für Datenbanken benötigst Du die Form 2017-08-14 für den heutigen Tag. Das ginge mit

Code: Alles auswählen

DIM Rdatum AS STRING
Rdatum = Year(now)&"-"&Right("0"&Month(now),2)&"-"&Right("0"&Day(now),2)
Für mich ist da eher die Frage, warum Du denn nicht direkt im SQL-Code das aktuelle Datum reinschreibst:

Code: Alles auswählen

sSQL = "UPDATE `BestellDaten`Set `Rechnungs Datum`= Curdate()" &_ 
" WHERE  `ID` ='"& iID &_
Gruß

Robert

Buck_r
Beiträge: 7
Registriert: Mi, 13.01.2016 15:12

Re: Datum per SQL ist Falsch

Beitrag von Buck_r » Mi, 16.08.2017 09:51

Hallo RobertG
Danke für deine Hilfe,
Das Datum per SQL direkt zu schreiben ist mein Idee von vornherein gewesen, nur hatte ich die falschen Funktionen parat.
Ich habe es mit "now" probiert, was natürlich nicht funktionierte.
Deswegen der Umweg über die Variablen.

Eine schöne Lösung.
Danke

RobertG
*******
Beiträge: 1638
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datum per SQL ist Falsch

Beitrag von RobertG » Mi, 16.08.2017 16:40

Hallo Buck_r,

Code: Alles auswählen

NOW()
gibt Datum und Uhrzeit zusammen wieder.

Code: Alles auswählen

DATE(NOW())
müsste bei MySQL/MariaDB dann das aktuelle Datum wiedergeben - genauso wie CURDATE(), CURRENT_DATE().

Gruß

Robert

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste