smordi Geschrieben 4. Juli 2005 Teilen Geschrieben 4. Juli 2005 Hallo liebe Leute! Folgendes Problem: Diese Tabelle ist gegeben: nr. | datum | tage online 1 2005-01-01 30 2 2005-02-01 30 3 2005-03-01 40 nr. = auto_increment datum = date tage online = int Angenommen, wir hätten heute den 31.03.2005, möchte ich folgende Ergebnisse haben: nr. | x tage zu lang online 1 60 2 29 ... welches der Berechnung --> aktuelles Datum - (Datum + Tage online) entspricht. Ich bitte Euch herzlichst darum, mir den passenden Query dafür zu schreiben. Wenn möglich, dann BITTE den GENAUEN Query, denn die Zeit ist sehr knapp. Meine Version ist 4.0.23. Leider bietet mein Provider nur diese alte Version an. Vielen Dank ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 4. Juli 2005 Teilen Geschrieben 4. Juli 2005 ... welches der Berechnung --> aktuelles Datum - (Datum + Tage online) entspricht. select Nr, TO_DAYS(CURRENT_DATE) - (TO_DAYS(Datum) + Tage Online) zu_Lang from Tabelle Ist ungetestet... TO_DAYS(date) Given a date date, returns a daynumber (the number of days since year 0). mysql> SELECT TO_DAYS(950501); -> 728779 mysql> SELECT TO_DAYS('1997-10-07'); -> 729669 TO_DAYS() is not intended for use with values that precede the advent of the Gregorian calendar (1582), because it does not take into account the days that were lost when the calendar was changed. Remember that MySQL converts two-digit year values in dates to four-digit form using the rules in Section 11.3, “Date and Time Typesâ€. For example, '1997-10-07' and '97-10-07' are seen as identical dates: mysql> SELECT TO_DAYS('1997-10-07'), TO_DAYS('97-10-07'); -> 729669, 729669 For other dates before 1582, results from this function are undefined. http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html Bei der MySQL-Dokumentation werden sie immer geholfen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 4. Juli 2005 Teilen Geschrieben 4. Juli 2005 Felder sind datum und online... SELECT *,DAYOFYEAR(FROM_UNIXTIME(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(ADDDATE(datum, INTERVAL online DAY)))) FROM datum Zum Testen kannst Du auch NOW() durch '2005-03-31' ersetzen... Edit: Nimm das Statement meines Vorposters, wenn's funktioniert, meins ist zu umständlich Und meins funktioniert nur innerhalb eines Jahres... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smordi Geschrieben 5. Juli 2005 Autor Teilen Geschrieben 5. Juli 2005 Vielen vielen Dank Jemand hat mir noch eine Lösung geschrieben: SELECT praknr, TO_DAYS(NOW()) - (TO_DAYS(datum) + online) AS XTageZuLangeOnline FROM prak WHERE TO_DAYS(datum) + online < TO_DAYS(NOW()) ORDER BY XTageZuLangeOnline DESC Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.