Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Hallo
Kann mir jemand sagen, wie ich eine SQL Abfrage mache, die nur Ergenisse liefert, die nicht älter als zwei Tage sind.
Das Datum liegt in der bereits vorhandenen SQL Datenbank in diesem Format vor:
Ich hab jetzt versucht ab die Zeile ab datum per && an meine Abfrage anzuhängen. Datum hab ich angepasst. Das heißt in meinem Fall s_date. Es kommt zwar kein Fehler, aber es wird nichts angezeigt. Muss ich datepart auch noch anpassen oder ist das ein SQL Befehl?
SQL Abfrage:
"SELECT * FROM tb_activity WHERE assigned_to = 17 && closed = 'n' && s_date >= datepart(yyyy,getdate()-2)*10000 + datepart(mm,getdate()-2)*100 + datepart(dd,getdate()-2)";
EDIT: Hab gerade in PHPMyAdmin gesehen, dass s_date ein varchar Feld mit 8 Feldern ist. Geht das dann auch?
In meinem Fall brauch ich eigentlich nur ein datepart für den Tag oder?
Der VARCHAR ist das Problem, aber probier mal das:
Code:
SELECT *
FROM tb_activity
WHERE assigned_to = 17
AND closed = 'n'
AND isnull(cast(s_date AS INT),0) >= datepart(yyyy,getdate()-2)*10000 + datepart(mm,getdate()-2)*100 + datepart(dd,getdate()-2)
Ich habe && durch AND ersetzt, && habe ich noch nie gesehen und ist auf jedenfall nicht zu allen SQL DBs kompatibel.
cast(s_date AS INT) sollte deinen VARCHAR Wert in INT umwandeln. isnull() fängt dabei mögliche Fehler ab und ersetzt sie durch 0.
Diese Syntax geht unter MS SQL, sollte aber auch unter MySQL klappen.
Damit wird ebenfalls nichts ausgegeben. Das && habe ich eigentlich immer verwendet, aber gut zu wissen.
Ich verstehe aber nicht, wieso du mit 10000 bzw. 100 multiplizierst. Ich hab jetzt versucht, den Befehl in PHPMyAdmin auszuführen. Da kommt aber der Fehler: #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INT),0) >= datepart(yyyy,getdate()-2)*10000 + datepart(mm,getda
Sry, immer diese Syntax Unterschiede
Das multiplizieren mache ich, um die Ziffern an die richtige Stelle zu bekommen. Würde ich die Ziffern erst in Zeichenketten umwandeln und dann verketten, könnten mir Nullen bei Monaten oder Tagen fehlen. Daher rechne ich erst mit Zahlen.
Code:
SELECT *
FROM tb_activity
WHERE assigned_to = 17
AND closed = 'n'
AND ifnull(cast(s_date AS INT),0) >= year(now()-2)*10000 + month(now()-2)*100 + day(now()-2)
Hab jetzt gerade das SELECT now() -2 in PHPMyAdmin probiert. Dabei wird 20120803105004 ausgegeben. Also das heutige Datum mit momentaner Uhrzeit. Wenn ich das -2 weglasse, kommt natürlich das normale Datum 2012-08-03 10:50:04
Eigentlich sollte er mit
year(date_add(now(), interval -2 day))*10000
die Jahreszahl aus dem Datum - 2 Tage ziehen, mit 10000 multiplizieren = 20120000 und mit
month(date_add(now(), interval -2 day))*100
sowie
day(date_add(now(), interval -2 day))
addieren = 20120801
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
Diese Seite verwendet Cookies, um Inhalte zu personalisieren und dich nach einem Login angemeldet zu halten, wenn du registriert bist.
Durch die weitere Nutzung unserer Webseite erklärst du dich damit einverstanden.