WHERE (car_r_start_date BETWEEN CAST('$d_start' AS DATETIME) AND CAST('$d_end' AS DATETIME)) OR (car_r_end_date BETWEEN CAST('$d_start' AS DATETIME) AND CAST('$d_end' AS DATETIME))
SELECT * FROM `tb_time`
WHERE ( `start` BETWEEN '2015-08-05 12:00' and '2015-08-08 12:00')
OR ( `end` BETWEEN '2015-08-05 12:00' and '2015-08-08 12:00')
ผมได้ลอง 3 แบบค้นหาได้เฉพาะวันที่ตรงกันเท่านั้นครับผมอยากให้ระหว่างวันที่ด้วยครับ ไม่รู้ผมต้อง where แบบไหนถึงครบคุมครับปม
แบบที่1 Code (PHP)
WHERE ((car_r_start_date BETWEEN '$d_start' and '$d_end') OR (car_r_end_date BETWEEN '$d_start' and '$d_end')
แบบที่2 Code (PHP)
WHERE (car_r_start_date BETWEEN CAST('$d_start' AS DATETIME) AND CAST('$d_end' AS DATETIME)) OR (car_r_end_date BETWEEN CAST('$d_start' AS DATETIME) AND CAST('$d_end' AS DATETIME))
แบบที่3 Code (PHP)
$query_Re_car_r .= "WHERE (car_r_start_date <= CAST($d_start AS DATETIME)) AND car_r_end_date >= CAST($d_start AS DATETIME)) OR (car_r_end_date >= CAST($d_end AS DATETIME)) AND car_r_start_date <= CAST($d_end AS DATETIME))
result ที่ได้มันก็ถูกแล้วหนิครับ
แต่สิ่งที่ต้องการ กับ คำสั่ง SQL มันไม่เหมือนกัน
ที่ต้องการ
น่าจะเป็นแบบนี้นะ
Code (SQL)
SELECT * FROM `118303` WHERE UNIX_TIMESTAMP('2015-09-02 12:00:00') BETWEEN UNIX_TIMESTAMP(sd) AND UNIX_TIMESTAMP(ed)
OR UNIX_TIMESTAMP('2015-09-04 16:00:00') BETWEEN UNIX_TIMESTAMP(sd) AND UNIX_TIMESTAMP(ed)
SET @SD = '2015-09-03 12:00:00';
SET @ED = '2015-09-10 16:00:00';
SELECT * FROM `118303` WHERE UNIX_TIMESTAMP(@SD) BETWEEN UNIX_TIMESTAMP(sd) AND UNIX_TIMESTAMP(ed)
OR UNIX_TIMESTAMP(@ED) BETWEEN UNIX_TIMESTAMP(sd) AND UNIX_TIMESTAMP(ed)
OR UNIX_TIMESTAMP(sd) BETWEEN UNIX_TIMESTAMP(@SD) AND UNIX_TIMESTAMP(@ED)
OR UNIX_TIMESTAMP(ed) BETWEEN UNIX_TIMESTAMP(@SD) AND UNIX_TIMESTAMP(@ED)
WHERE
(
UNIX_TIMESTAMP('$d_start') >= UNIX_TIMESTAMP(car_r_start_date)
AND
UNIX_TIMESTAMP('$d_start') <= UNIX_TIMESTAMP(car_r_end_date)
)
OR
(
UNIX_TIMESTAMP('$d_end') >= UNIX_TIMESTAMP(car_r_start_date)
AND
UNIX_TIMESTAMP('$d_end') <= UNIX_TIMESTAMP(car_r_end_date)
)
OR
(
UNIX_TIMESTAMP('$d_start') <= UNIX_TIMESTAMP(car_r_start_date)
AND
UNIX_TIMESTAMP('$d_end') => UNIX_TIMESTAMP(car_r_end_date)
)