Datum un MySQL
Helmut
- datenbank
Hallo zusammen,
Ich habe ein kleines problem mit der SQL anweisung und dem Datum:
Ich möchte das datum mit einer variable in die SQL anweisung übergeben. Wie muss ich das Datum miteinbringen.
Bei Access läuft es so:
datum = mm & "/" & ttt & "/" & jjjj
in sql dann so:
WHERE (((tabelle.spalte) = #" & datum & "#))
weiß jemand da bescheid?
hi,
Ich habe ein kleines problem mit der SQL anweisung und dem Datum:
Ich möchte das datum mit einer variable in die SQL anweisung übergeben. Wie muss ich das Datum miteinbringen.
so, wie es zu dem datumstyp, den du für die spalte gewählt hast, passt.
lies http://www.mysql.com/doc/de/Date_and_time_types.html ff.
gruss,
wahsaga
Ich habe es ja so versucht aber da bringt er nix.
Datum = 2004-03-22" (genau wie in DB)
SQL: (((t_besucher.datum)=' & datum & '))
kommt zwar keine fehlermeldung aber er bringt aber auch keine werte raus.
P.S. es läuft auf eine ASP Seite wenns hilft.
Halihallo Helmut
Ich habe es ja so versucht aber da bringt er nix.
Datum = 2004-03-22" (genau wie in DB)
SQL: (((t_besucher.datum)=' & datum & '))
Lass dir den _generierten_ SQL-Query ausgeben und poste ihn hier.
Einzig dies ist für eine Fehlersuche relevant! - Denn so wie es
ausschaut, ist es OK.
kommt zwar keine fehlermeldung aber er bringt aber auch keine werte raus.
Gibt es einen Datensatz mit dem entsprechenden Datum? - Ist die
Join-Bedingung falsch?
Viele Grüsse
Philipp
Hier di Komplette SQL anweisung.
SQL = "SELECT t_besucher.id, t_besucher.ip, t_besucher.name, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)=2004-03-22)) ORDER BY t_besucher.id DESC;"
RS.Open SQL, objconn
Ich wollte grad mal das datum fest reinschreiben aber da kommt auch nix.
Und ja es sind daten mit diesem Datum vorhanden.
Halihallo Helmut
SQL = "SELECT t_besucher.id, t_besucher.ip, t_besucher.name, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)=2004-03-22)) ORDER BY t_besucher.id DESC;"
Datumsangaben sind Strings und gehören somit in Quotes oder
Doublequotes gesetzt.
t_besucher.datum="2004-03-22"
BTW: Warum diese sinnlose Klammerung um den Attributnamen?
Viele Grüsse
Philipp
t_besucher.datum="2004-03-22"
Siehe mal meinen beitrag oben
BTW: Warum diese sinnlose Klammerung um den Attributnamen?
die habe ich mal reingemacht weil ich was anderes getestet habe und vergessen Sie rauszunehmen aber ich habe sie schon entfernt für dich :)
hi,
SQL = "SELECT t_besucher.id, t_besucher.ip, t_besucher.name, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE (((t_besucher.datum)=2004-03-22)) ORDER BY t_besucher.id DESC;"
2004-03-22 ergibt nach allgemeinen rechenregeln 1979 - das ist kein gültiger wert des datumsformates, das mysql erwartet.
solltest du statt des rechenausdruckes 2004-03-22 den string '2004-03-22' gemeint haben, dann notiere diesen auch so.
gruss,
wahsaga
Ich habe es so mal getestet:
WHERE (((t_besucher.datum)='2004-03-22'))
dann warte ich im Browser bis ich schwarz werde also es kommt nix.
WHERE (((t_besucher.datum)="2004-03-22"))
Wenn ich es so mache dann kommt die fehlermeldung das nach dem " das anweisungsende erwartet wird. (Im Browser)
yo,
WHERE (((t_besucher.datum)='2004-03-22'))
dann warte ich im Browser bis ich schwarz werde also es kommt nix.
warten heisst nicht, dass es falsch ist. das kommt immer auf die abfrage, das system und der datenmenge drauf an. wenn dir geholfen werden soll, sind fehlermeldungen aber wichtig.
WHERE (((t_besucher.datum)="2004-03-22"))
Wenn ich es so mache dann kommt die fehlermeldung das nach dem " das anweisungsende erwartet wird. (Im Browser)
wenn du die sql anweisung über php ausführst, dann ist klar, dass es nicht mit "datum" geht, weil er die " braucht, um einen string einzugrenzen.
Ilja
Was das warten betrifft ca. nach 30 - 60 minuten kommt dann die seite kan nicht angezeigt werden....
Es sind mom nur 12 einträge drin.
Das kann nicht so lange dauern.
Was das andere betrifft ich arbeite über ASP.
yo,
Was das warten betrifft ca. nach 30 - 60 minuten kommt dann die seite kan nicht angezeigt werden....
dann scheint es ein grundsätzliches problem zu geben. falsch die abfrage falsch ist, gibt es auch eine fehlermeldung und das dauert in aller regel nicht solange.
Was das andere betrifft ich arbeite über ASP.
was asp betrifft, so ist das nicht meine welt, aber das gleiche problem könnte auftauchen, das die "zur makrierung von strings genutzt werden.
Ilja
Ich habe es ja auch schon mit ' ' versucht aber dann warte ich so lange.
Das komische daran ist ja das wenn ich idese anweisung im MySQL Editor eingebe gibt er mir die daten ohne probleme innerhal von 0,22 sec zurück.
MySQL Control Center
yo
Das komische daran ist ja das wenn ich idese anweisung im MySQL Editor eingebe gibt er mir die daten ohne probleme innerhal von 0,22 sec zurück.
das ist doch schon mal ein sicherer hinweis, dass das sql statement richtig ist. das problem, warum es so lange dauert, liegt dann logischerweise woanders und nicht an der anweisung.
Ilja
Aber wo das ist hier die frage.
Hier mal das komplette script.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Besucher Statistik im Intranet</title>
</head>
<body>
<%
strComplete = "Driver=MySQL ODBC 3.51 Driver;Server=localhost;" &_
"Option=3;UID=intranet;DATABASE=intranet;"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.open strComplete
Set RS = CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.CursorLocation = 3
rs.LockType = 3
SQL = "SELECT t_besucher.id, t_besucher.ip, t_besucher.name, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE t_besucher.datum='2004-03-22' ORDER BY t_besucher.id DESC;"
RS.Open SQL, objconn
Response.Write ("<center>")
Response.Write ("<font face=Arial size=6><b><i><u>Besucher Statistik vom Intranet")
Response.Write ("<br>") & ("von Datum: ") & date &("</b></i></u></font>")
Response.Write ("<br><center><a href=statistik_gesamt.asp>gesamte Statistik abrufen</a></center>")
Response.Write ("<br><br>")
Response.Write ("<table border=1>")
Response.Write ("<td width=130><b><i><u>Besuchernummer:</b></i></u></td>")
Response.Write ("<td width=150><b><i><u>Besucher - IP:</b></i></u></td>")
Response.Write ("<td width=180><b><i><u>Besucher Name:</b></i></u></td>")
Response.Write ("<td width=100><b><i><u>besucht am:</b></i></u></td>")
Response.Write ("<td width=100><b><i><u>besucht um:</b></i></u></td>")
Response.Write ("</tr>")
while (not rs.eof)
Response.Write ("<tr>")
Response.Write ("<td>")
response.write rs("id")
Response.Write ("</td>")
Response.Write ("<td>")
Response.write rs("ip")
Response.Write ("</td>")
Response.Write ("<td>")
response.write rs("name")
Response.Write ("</td>")
Response.Write ("<td>")
response.write rs("datum")
Response.Write ("</td>")
Response.Write ("<td>")
response.write rs("uhrzeit")
Response.Write ("</td>")
wend
Response.Write ("</table>")
Rs.Close
objConn.Close
Set objConn = Nothing
%>
<form method = "POST" action="statistik_datum.asp">
<p align="center">Bitte geben Sie hier ein Datum ein für den Tag den Sie für
die Statistik brauchen.<br>
Beispiel: <% =date %><br>
<input type="text" name="datum"><br>
<input type="submit" value="OK" name="ok">
</form>
</body>
Hallo,
Aber wo das ist hier die frage.
Hier mal das komplette script.<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Besucher Statistik im Intranet</title>
</head>
<body><%
strComplete = "Driver=MySQL ODBC 3.51 Driver;Server=localhost;" &_
"Option=3;UID=intranet;DATABASE=intranet;"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.open strCompleteSet RS = CreateObject("ADODB.Recordset")
rs.CursorType = 3
rs.CursorLocation = 3
rs.LockType = 3SQL = "SELECT t_besucher.id, t_besucher.ip, t_besucher.name, t_besucher.datum, t_besucher.uhrzeit FROM t_besucher WHERE t_besucher.datum='2004-03-22' ORDER BY t_besucher.id DESC;"
Lass mal das Semikolon am Ende weg. PHP jedenfalls warnt davor, bei SQL-Queries an MySQL. http://de3.php.net/manual/en/function.mysql-query.php
RS.Open SQL, objconn
^Hast Du ein Schwein, dass ASP nicht casesensitive ist, oder ist es das doch?
Response.Write ("<center>")
Response.Write ("<font face=Arial size=6><b><i><u>Besucher Statistik vom Intranet")
Response.Write ("<br>") & ("von Datum: ") & date &("</b></i></u></font>")
Response.Write ("<br><center><a href=statistik_gesamt.asp>gesamte Statistik abrufen</a></center>")
Response.Write ("<br><br>")
Response.Write ("<table border=1>")Response.Write ("<td width=130><b><i><u>Besuchernummer:</b></i></u></td>")
Response.Write ("<td width=150><b><i><u>Besucher - IP:</b></i></u></td>")
Response.Write ("<td width=180><b><i><u>Besucher Name:</b></i></u></td>")
Response.Write ("<td width=100><b><i><u>besucht am:</b></i></u></td>")
Response.Write ("<td width=100><b><i><u>besucht um:</b></i></u></td>")
Response.Write ("</tr>")
So. Nehmen wir an, Deine Querie ergibt eine Datensatzmenge. Dann steht der Datensatzzeiger jetzt auf Datensatz 1.
while (not rs.eof)
^OK. Es ist nicht EOF.
Response.Write ("<tr>")
Response.Write ("<td>")
response.write rs("id")
Response.Write ("</td>")
Response.Write ("<td>")
Response.write rs("ip")
Response.Write ("</td>")
Response.Write ("<td>")
response.write rs("name")
Response.Write ("</td>")
Response.Write ("<td>")
response.write rs("datum")
Response.Write ("</td>")
Response.Write ("<td>")
response.write rs("uhrzeit")
Response.Write ("</td>")
Der Datensatzzeiger steht immer noch auf Datensatz 1. Es ist immer noch nicht EOF. Das wird es auch nie ;-)). Wo veränderst Du den Datensatzzeiger? Es fehlt sowas wie
rs.MoveNext
wend
^Endlosschleife bis Timeout
Response.Write ("</table>")
Rs.Close
objConn.Close
Set objConn = Nothing
%>
viele Grüße
Axel
Oh man das nennt man ihronie des schicksals. Ich hatte fest daran geglaubt das ich das rs.MoveNext geschrieben habe. Aber ich muss es warscheinlich bei meinen test irgendwann ausversehen rausgelöscht haben. Des wegen hat es auch so lange gedauert bis die seite lädt weil es in eine endloss schleife lief.
Mann vielen dank.
Und wie nennt man das nun blödheit oder Blindheit?
mfg Helmut
yo
Und wie nennt man das nun blödheit oder Blindheit?
nun wenn man den fehler nicht sieht wohl blindheit, wenn man die brille vergessen hat aufzusetzen dann wohl blödheit ;-)
Ilja
Jetzt habe ich nochmal eine frage.
Ist das normal wenn ich in der db das format für time auf standart gelassen habe (also 00:00:00) und wenn ich es über asp ganznormal auslese wie oben dann erscheinnt es so:
Datum Uhrzeit.
Halihallo Helmut
Ist das normal wenn ich in der db das format für time auf standart gelassen habe (also 00:00:00)
Hä? - Meinst du den Default-Wert für ein Feld des Typs TIME?
und wenn ich es über asp ganznormal auslese wie oben dann erscheinnt es so:
Wo oben?
Datum Uhrzeit.
Das wird ausgegeben? - Das klingt nicht nach TIME-Feld, sondern nach
Beschreibung. Und diese klingt wirklich "komisch", denn bei einem
TIME-Typ-Attribut wird etwa '12:36:24' ausgegeben. Ich könnte mir
vorstellen, dass die ODBC-Schnittstelle dies erweitert...?
Schreib doch etwas Code und dessen Ausgabe hin, sodass (zumindest
ich) es verstehen und nachvollziehen kann.
Viele Grüsse
Philipp
Halihallo Helmut
Schreib doch etwas Code und dessen Ausgabe hin, sodass (zumindest
ich) es verstehen und nachvollziehen kann.
Das sollte heissen, dass dich vielleicht jemand anderes versteht,
aber ich deine Formulierung nicht verstehe. Deshalb auch die
Nachfrage nach Quellcode und Ausgabe.
Viele Grüsse
Philipp