Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 日期时间查询搜索_Mysql_Sql_Date - Fatal编程技术网

Mysql 日期时间查询搜索

Mysql 日期时间查询搜索,mysql,sql,date,Mysql,Sql,Date,我有一个样本数据库 Name CheckIn CheckOut Jake 2017-08-02 00:00:00 2017-08-05 00:00:00 Rowan 2017-08-07 00:00:00 2017-08-11 00:00:00 Xander 2017-08-08 00:00:00 2017-08-10 00:00:00 Anna 2017-08-09 00:00:00

我有一个样本数据库

 Name          CheckIn                 CheckOut
Jake      2017-08-02 00:00:00    2017-08-05 00:00:00
Rowan     2017-08-07 00:00:00    2017-08-11 00:00:00
Xander    2017-08-08 00:00:00    2017-08-10 00:00:00
Anna      2017-08-09 00:00:00    2017-08-15 00:00:00
Nat       2017-08-11 00:00:00    2017-08-14 00:00:00
例如,用户搜索2017-08-08日期至2017-08-10日期。用户希望搜索日期为8、9和10的所有数据。例如,Rowan选择7号签入和10号签出的日期,因此Rowan的日期分别为7号、8号、9号、10号和11号。这是我想要的输出

Name          CheckIn                 CheckOut
Rowan     2017-08-07 00:00:00    2017-08-11 00:00:00
Anna      2017-08-09 00:00:00    2017-08-15 00:00:00
Xander    2017-08-08 00:00:00    2017-08-10 00:00:00
我真的不知道预订搜索的逻辑,帮我吧。谢谢大家。

试试这个:

SELECT * FROM test.TableName WHERE 
(DATE(CheckIn) BETWEEN DATE('2017-08-08') AND DATE('2017-08-10') )
OR
(DATE(CheckOut) BETWEEN DATE('2017-08-08') AND DATE('2017-08-10') )
OR 
(DATE('2017-08-08') BETWEEN DATE(CheckIn) AND DATE(CheckOut))
OR
(DATE('2017-08-10') BETWEEN DATE(CheckIn) AND DATE(CheckOut));
如果要检查重叠间隔,请按以下方式进行:

SELECT Name, CheckIn, CheckOut
FROM mytable
WHERE CheckIn <= '2017-08-10' AND CheckOut >= '2017-08-08';

对于
签入
签出
列中的
开始
结束
日期,您需要一个
介于
之间的条件

SELECT *
FROM table1
WHERE check_in BETWEEN '2017-08-07' AND '2017-08-10'
  OR check_out BETWEEN '2017-08-07' AND '2017-08-10'
结果

name    check_in              check_out
-------------------------------------------------
Rowan   07.08.2017 00:00:00   11.08.2017 00:00:00
Xander  08.08.2017 00:00:00   10.08.2017 00:00:00
Anna    09.08.2017 00:00:00   15.08.2017 00:00:00
你可以查看演示

name    check_in              check_out
-------------------------------------------------
Rowan   07.08.2017 00:00:00   11.08.2017 00:00:00
Xander  08.08.2017 00:00:00   10.08.2017 00:00:00
Anna    09.08.2017 00:00:00   15.08.2017 00:00:00