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