Mysql
 sql >> база данни >  >> RDS >> Mysql

PDO PHP - Намиране на всички редове между 2 дати - показва празно

DATE_FORMAT() връща низ, а не дата. Предаване на 3 низови аргумента към BETWEEN ... кой знае какво ще върне това.

За да върнете кода си назад, използвайте:

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

за да форматирате вашите дати по начина, по който mySQL очаква, и:

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

в заявката.

Или ако предпочитате обектно-ориентиран подход, направете нещо подобно:

$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);

След това във вашата заявка направете:

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

След това за всичко останало можете да повторите формата, както желаете:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Специфично групиране по

  2. MySQL:Добавете колона за последователност въз основа на друго поле

  3. MySQL заявка въз основа на въвеждане от потребителя

  4. Границата на рекурсия е превишена при нерекурсивна процедура

  5. Възможно ли е да се предаде променлива към извикване на съхранена процедура в mysql?