Günni: [MySQL] - Kinofilme auslesen - Start DONNERSTAG ?

Hallo zusammen.

Ich habe hier ein kleines problem mit dem ich einfach nicht klar komme. Ich habe in meiner DB Aktuelle Kinofilme mit Trailer usw.. Welche ich auf meiner Seite ausgeben möchte.. immer Die VORWOCHE, Aktuelle WOCHE und Nächste WOCHE.
Allerdings laufen Kinofilme immer Donnerstags an und nicht Sonntag.. Kann mir hier einer mit der Abfrage helfen ? Vielen Vielen Dank.

  
mysql_query("SELECT id,datum,title,genere,image,trailer FROM kino WHERE WEEK(datum) > (WEEK(CURDATE()) -2) AND WEEK(datum) < (WEEK(CURDATE()) +2) ORDER by datum ASC");  

  1. Hi,

    Ich habe hier ein kleines problem mit dem ich einfach nicht klar komme. Ich habe in meiner DB Aktuelle Kinofilme mit Trailer usw.. Welche ich auf meiner Seite ausgeben möchte.. immer Die VORWOCHE, Aktuelle WOCHE und Nächste WOCHE.
    Allerdings laufen Kinofilme immer Donnerstags an und nicht Sonntag.. Kann mir hier einer mit der Abfrage helfen ?

    Soll eine „Woche“ also bei dir mit dem Donnerstag beginnen und enden?
    Möchtest du Vorwoche, aktuelle und nächste auf diese „verschobene“ Definition von Woche bezogen sehen?

    mysql_query("SELECT id,datum,title,genere,image,trailer FROM kino WHERE WEEK(datum) > (WEEK(CURDATE()) -2) AND WEEK(datum) < (WEEK(CURDATE()) +2) ORDER by datum ASC");

      
    (Hint: Das ist kein SQL, sondern PHP-Code. Statt den Code als letzteres auszuzeichnen, kannst du aber lieber gleich nur den reinen SQL-Code zeigen - wen interessiert das PHP-Drumherum bei so einer Fragestellung?)  
      
    Wenn die Woche am Donnerstag beginnen und enden soll, musst du das natürlich irgendwie berücksichtigen.  
      
    Vielleicht wäre es günstiger, mit „eine Woche sind sieben Tage“ zu operieren, als Wochen zu vergleichen.  
    Mit WEEKDAY erst mal schauen, welcher Wochentag vorliegt - und davon abhängig Start- und Enddatum deiner drei-Donnerstagswochen-Periode zu errechnen.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Vielleicht wäre es günstiger, mit „eine Woche sind sieben Tage“ zu operieren, als Wochen zu vergleichen.
      Mit WEEKDAY erst mal schauen, welcher Wochentag vorliegt - und davon abhängig Start- und Enddatum deiner drei-Donnerstagswochen-Periode zu errechnen.

      Ähm ok.. Danke kann solche berechnungen direkt in der SQL Abfrage machen ? hast du evt. nen link zu soetwas im MySQL Referenzbuch ? Kenn mich leider mit den SQL Sachen für Tag/Wochen berechnung 0 aus.. Danke

      1. Hi,

        Ähm ok.. Danke kann solche berechnungen direkt in der SQL Abfrage machen ? hast du evt. nen link zu soetwas im MySQL Referenzbuch ?

        http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

        Alternativ kannst du die Daten natürlich auch vorher in PHP berechnen, wenn du keine reine SQL-Lösung brauchst.
        strtotime kann bei sowas recht nützlich sein, weil es bspw. auch „Ausdrücke“ wie 'next tuesday' in Timestamps „umrechnen“ kann.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Alternativ kannst du die Daten natürlich auch vorher in PHP berechnen, wenn du keine reine SQL-Lösung brauchst.
          strtotime kann bei sowas recht nützlich sein, weil es bspw. auch „Ausdrücke“ wie 'next tuesday' in Timestamps „umrechnen“ kann.
          MfG ChrisB

          Ahh.. danke ! Das mit PHP verstehe ich schon besser.. dann geh ich mal testen.. Danke für deine Hilfe !

          1. Eine Frage noch.. wie bau ich nun den PHP Timestamp in die SQL Abfrage ein ? Also wie sag ich SQL das es sich um einen Timestamp handelt ?

              
            $next_thursday = strtotime("next Thursday");  
            $last_thursday = strtotime("last Thursday");  
                    	  
            $abfrage = mysql_query("SELECT id,datum,title,image,trailer FROM kino WHERE datum > DATE($last_thursday) AND datum < DATE($next_thursday) ORDER by datum DESC");  
            
            
            1. Hi,

              wie bau ich nun den PHP Timestamp in die SQL Abfrage ein ? Also wie sag ich SQL das es sich um einen Timestamp handelt ?

              In dem du ihn formatiert ausgibst, in einem der Datumsformate, die MySQL kennt.

              MfG ChrisB

              --
              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
          2. Hi!

            Ahh.. danke ! Das mit PHP verstehe ich schon besser..

            Dabei ist es doch auch in MySQL sehr einfach. Beispielsweise Montag vor einer Woche wäre

            SELECT CURDATE() - INTERVAL (WEEKDAY(CURDATE()) + 7) DAY

            Lo!