keine Idee wegen Nummerierung pro Saison

  • Themenstarter Themenstarter thegamehhh
  • Beginndatum Beginndatum
Ich wage zu behaupten das meine Variante einfach ist:
Dein Query in meiner Variante:
Annahme Jahr ist 2014.
SQL:
SELECT COUNT(Tore) FROM Spiele WHERE MatchID>201410001 AND MatchId<=201420306;
MatchId ist kein String sondern ein Integer, die Verwendung von Substring war irreführend. Wobei das Beispiel oben auch mit Strings genauso funktionieren müsste.
 
Zuletzt bearbeitet von einem Moderator:
Schaltjahr ist egal, MatchID ist kein Datum. Auch für 2000 gilt
SQL:
SELECT COUNT(Tore) FROM Spiele WHERE MatchID>200010001 AND MatchId<=200020306;
Den Spieltagen ist es völlig egal ob Februar 28 oder 29 Tage hat.
 
Ich will aber nur Spieltage berücksichtigen, die in einem Schaltjahr stattgefunden haben. Freilich ist es den Datensätzen egal, aber nicht dem Nutzer.
 
Ok, das wird schwierig. Solche Sachen würde ich dann war scheinlich eher mit PHP lösen: Also für eine Zeitraum bestimmen, welche Jahre Schaltjahre sind und dann die Query für jedes dieser Jahre aufrufen und zusammenzählen.
Wie sieht denn deine Query dazu aus?
 
is_leap_year() habe ich hier gefunden: http://temptin.wordpress.com/2008/10/26/mysql-function-to-find-if-a-year-is-leap-year-or-not/
Code:
CREATE FUNCTION `is_leap_year`(TODAY DATE)
RETURNS tinyint(1)
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ”
BEGIN
DECLARE leap_year BOOLEAN;

[...]


IF ((SELECT MOD(YEAR(today),4) = 0) AND (SELECT MOD(YEAR(today),100) != 0))
THEN SET leap_year = 1;
ELSEIF (SELECT MOD(YEAR(today),400) = 0) THEN SET leap_year = 1;
ELSE SET leap_year =0;
END IF;

RETURN leap_year;
END;

Code:
SELECT SUM(TORE) FROM Spiele WHERE is_leap_year(MAKE_DATE(seasonyear, 1))=1 AND numberOfTheMatch BETWEEN 10 AND 20
 
Zurück