sql >> Databáze >  >> RDS >> Mysql

PDO PHP - Najít všechny řádky mezi 2 daty - zobrazuje se prázdné

DATE_FORMAT() vrátí řetězec, nikoli datum. Předání 3 řetězcových argumentů do BETWEEN ... kdo ví, co se to vrátí.

Chcete-li uvolnit svůj kód zpět, použijte:

$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);  
$week_end =  date('Y-m-d',time()+( 7 - date('w'))*24*3600); 

k formátování dat způsobem, který mySQL očekává, a:

WHERE 
  start_date BETWEEN '".$week_start."' AND '".$week_end."'

v dotazu.

Nebo pokud dáváte přednost objektově orientovanému přístupu, udělejte něco takového:

$week_start = new DateTime; 
$week_end = new DateTime;
$week_start->setTimestamp(time()+( 1 - date('w'))*24*3600)); 
$week_end->setTimestamp(time()+( 7 - date('w'))*24*3600);

Poté ve svém dotazu proveďte:

WHERE 
  start_date 
      BETWEEN '".$week_start->format('Y-m-d')."'
      AND '".$week_end->format('Y-m-d')."'

Pak pro všechno ostatní můžete formát opakovat, jak si přejete:

echo $date->format('d-m-Y'); // etc



  1. Oracle SQL / Java:Získejte velikost vrácené datové sady z dotazu

  2. Ladění výkonu PL/SQL pro dotazy typu LIKE '%...%' se zástupnými znaky

  3. mysql delete, autoincrement

  4. Neefektivní SQL dotaz