Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: data BETWEEN
Forum PHP.pl > Forum > Bazy danych > MySQL
ennics
co jest nieprawidłowego w tym zapytaniu:
  1. SELECT *
  2. FROM `open_orders` WHERE `data` BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 14 DAY) ,'%y/%m/%d') AND DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 30 DAY) ,'%y/%m/%d') ORDER BY `data` DESC

format daty w kolumnie 'data' to y/m/d, zapyatnia nie zwraca żadnych danych ani błędów zarówno z mysql_error() jak i error_reporting(E_ALL);
jerrys
A może żaden rekord nie spełnia warunku.
Albo nie jestem pewien co do formatu daty może powinien być w formacie:
YYYY-mm-dd.
No może jeszcze zamiast małego y w dacie dać duże Y -nie wiem jaki masz format danych.
ennics
pozmieniałem format daty na Y-m-d, tabela wygląda tak
Kod
CREATE TABLE `open_orders` (
 `data` date NOT NULL default '0000-00-00',
 `externalidpar` varchar(255) NOT NULL default '',
//...
 `ordertypename` varchar(255) NOT NULL default '',
 `subtype` varchar(255) NOT NULL default '',
 KEY `dept_id` (`dept_id`)
) TYPE=MyISAM;


zapytanie tego typu działa
  1. SELECT *
  2. FROM `open_orders` WHERE `data` BETWEEN '2005-1-1' AND '2005-2-1' ORDER BY `data` DESC


to nie chce.
  1. SELECT *
  2. FROM `open_orders` WHERE `data` BETWEEN DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 14 DAY), '%Y-%m-%d') AND DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 30 DAY), '%Y-%m-%d') ORDER BY `data` DESC

nie wiem co jest przyczyną, zaraz mnie coś trzaśnie
Darti
a może tak? (wywalilem date_format() )
  1. SELECT *
  2. FROM `open_orders` WHERE `data` BETWEEN DATE_SUB(CURDATE(), INTERVAL 14 DAY) AND DATE_SUB(CURDATE(), INTERVAL 30 DAY) ORDER BY `data` DESC
ennics
próbowałem, rezultat ten sam...
Darti
ok, u mnie to działa (pobiera wszystko od 14 dni do 7 dni wprzód) :
  1. SELECT *
  2. FROM `open_orders` WHERE DATA BETWEEN CURDATE() - INTERVAL 14 DAY AND CURDATE() + INTERVAL 7 DAY ORDER BY `data` DESC


Pozdrawiam
ennics
dzięki za podp. dziełają obie, chociaż Twoja jest krótsza i chyba szybsza

<=>
  1. "SELECT *
  2. FROM `open_orders` WHERE `data` BETWEEN DATE_SUB(CURDATE(),INTERVAL 30 DAY) AND DATE_SUB(CURDATE(),INTERVAL 14 DAY) ORDER BY `data` DESC"
  3.  
  4. "SELECT *
  5. FROM `open_orders` WHERE `data` BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE() - INTERVAL 14 DAY ORDER BY `data` DESC"
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.