CURDATE() in SQL zum Schreiben per Basic nutzen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: CURDATE() in SQL zum Schreiben per Basic nutzen

Re: CURDATE() in SQL zum Schreiben per Basic nutzen

von Stephan » Di, 16.01.2018 09:43

RobertG hat geschrieben: Mo, 15.01.2018 17:46 Hallo Stephan,

Du musst statt

Code: Alles auswählen

,'" & akt_Datum & "')"

Code: Alles auswählen

, CURRENT_DATE)"
schreiben. Also nicht in Hochkommata. Dann gibst Du die Funktion weiter.
CURDATE() ist ein Kürzel, das auf die interne HSQLDB, MySQL und einige andere Datenbanken beschränkt ist. CURRENT_DATE ist der SQL-Standard und z.B. auch für Firebird verfügbar.

Gruß

Robert
Ja, danke es ging nur um die Schreibweise. Ohne Hochkomma war mir klar, aber ich habs irgendwie nicht hinbekommen.

Gruß
Stephan

Re: CURDATE() in SQL zum Schreiben per Basic nutzen

von RobertG » Mo, 15.01.2018 17:46

Hallo Stephan,

Du musst statt

Code: Alles auswählen

,'" & akt_Datum & "')"

Code: Alles auswählen

, CURRENT_DATE)"
schreiben. Also nicht in Hochkommata. Dann gibst Du die Funktion weiter.
CURDATE() ist ein Kürzel, das auf die interne HSQLDB, MySQL und einige andere Datenbanken beschränkt ist. CURRENT_DATE ist der SQL-Standard und z.B. auch für Firebird verfügbar.

Gruß

Robert

Re: CURDATE() in SQL zum Schreiben per Basic nutzen

von Toxitom » Mo, 15.01.2018 15:48

Hey Stephan,

zunächst solltest Du testen, ob Deine Datenbank überhaupt die Funktion "CURDATE()" etc unterstützt;) Hast Du es mal auf der Console versucht?

Ansonsten ... was spricht eigentlich gegen die direkte Basic-Methode?

Ich mache das auch über now(), wobei ich das eben entsprechend formatiere, also so: format(now(), "yyyy-mm-dd hh:mm") - das entspricht exakt dem von MySQL erwarteten Format.

Brauchst Du einen Timestamp, kannst Du auch in der Datenbank das Feld als "timestamp" feld definieren und automatisch auffüllen lassen - da kommt dann immer der Datum/zeit Wert rein wenn der Datensatz erzeugt wurde.

Viele Grüße
Tom

CURDATE() in SQL zum Schreiben per Basic nutzen

von Stephan » Mo, 15.01.2018 12:09

Hallo,

ich versuche CURDATE() oder CURRENT_DATE() in einem SQL-Ausdruck zu verwenden, um per Basic einen DAtensatz in eine Datentabelle zu schreiben.

ich verwende derzeitig ersatzweise folgenden Code:

Code: Alles auswählen

Sub Test()
'...
oDataSource = oBaseContext.getByName(DB_name) 'DB_name, siehe Modul "_info"
oCon = oDataSource.getConnection(sUser, sPassword)
oStatement = oCon.createStatement()
	
akt_Datum = Date_2_SQLDate(DATE())
		
sql_string = "INSERT INTO ""Firma"" (""Firmenname"", ""Abteilung"", ""FPostStrasse""," &_
	"""FPostleizahl"", ""FOrt"", ""FLand"", ""FBsStrasse"", ""FBsPostleizahl""," &_
	"""FBsOrt"", ""FeMail"", ""FUrl"", ""FAdressKategorie"", ""FTelefonZentrale""," &_
	"""FFax"", ""FBemerkung"", ""FGeaendert"") VALUES ('" & var_Firmenname & "', '" & var_Abteilung & "'," &_
	"'" & var_FPostStrasse & "', '" & var_FPostleizahl & "', '" & var_FOrt & "', '" & var_FLand & "'," &_
	"'" & var_FBsStrasse & "', '" & var_FBsPostleizahl & "', '" & var_FBsOrt & "', '" & var_FeMail & "'," &_
	"'" & var_FUrl & "', '" & var_FAdressKategorie & "', '" & var_FTelefonZentrale & "', '" & var_FFax & "'," &_
	"'" & var_FBemerkung & "','" & akt_Datum & "')"
		
oStatement.executeUpdate(sql_string)
End Sub

FUNCTION Date_2_SQLDate(d AS DATE) AS STRING
	DIM stMonth AS STRING
	DIM stDay AS STRING
	IF Month(d) < 10 THEN
		stMonth = "0" + Trim(Str(Month(d)))
	ELSE
		stMonth = Trim(Str(Month(d)))
	END IF
	IF Day(d) < 10 THEN
		stDay = "0" + Trim(Str(Day(d)))
	ELSE
		stDay = Trim(Str(Day(d)))
	END IF
	Date_2_SQLDate = Trim(Str(Year(d))) +"-"+ stMonth +"-"+ stDay
END FUNCTION



Wie kann ich CURDATE() oderr CURRENT_DATE() in sql_string direkt nutzen? Oder geht das nicht? Ich probiere seit einer Stunde...



Gruß
Stephan

Nach oben