Datum per SQL ist Falsch

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Buck_r
*
Beiträge: 16
Registriert: Mi, 13.01.2016 15:12

Datum per SQL ist Falsch

Beitrag von Buck_r »

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: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datum per SQL ist Falsch

Beitrag von RobertG »

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: 16
Registriert: Mi, 13.01.2016 15:12

Re: Datum per SQL ist Falsch

Beitrag von Buck_r »

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: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datum per SQL ist Falsch

Beitrag von RobertG »

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