php - 从mysql查询中提取特定日期

标签 php mysql sql date

我必须在我的表中添加列(check_in 和 checkout)。它们都具有这种格式 dd-mm-yyyy。我想检查我的两个参数(输入)之间是否有可用的日期。

我试过这样的:

select * from rezervare where date(check_out) > date('my_checkout_input') 

但这只适用于少数情况。如果我在 12-03-2015 - 15-03-2015 之间预订,在 17-03-2015 和 20-03-2015 之间预订。它不会将16-03-2015之间的日期作为免费日期。你能给我一些想法吗?

最佳答案

create table rezervare (
    id int auto_increment,
    check_in varchar(10),
    checkout varchar(10),
    primary key (id)
);
insert into rezervare values
    (null, '12-03-2015', '12-03-2015'),
    (null, '13-03-2015', '13-03-2015'),
    (null, '14-03-2015', '14-03-2015'),
    (null, '15-03-2015', '15-03-2015'),
    (null, '16-03-2015', '16-03-2015'),
    (null, '17-03-2015', '17-03-2015'),
    (null, '19-03-2015', '19-03-2015'),
    (null, '20-03-2015', '20-03-2015')
;

select * from rezervare;
+----+------------+------------+
| id | check_in   | checkout   |
+----+------------+------------+
|  1 | 12-03-2015 | 12-03-2015 |
|  2 | 13-03-2015 | 13-03-2015 |
|  3 | 14-03-2015 | 14-03-2015 |
|  4 | 15-03-2015 | 15-03-2015 |
|  5 | 16-03-2015 | 16-03-2015 |
|  6 | 17-03-2015 | 17-03-2015 |
|  7 | 19-03-2015 | 19-03-2015 |
|  8 | 20-03-2015 | 20-03-2015 |
+----+------------+------------+

如果您的架构与此相同,则不能使用日期函数,因为:

select id, date(check_in), date(checkout) from rezervare ;
+----+----------------+----------------+
| id | date(check_in) | date(checkout) |
+----+----------------+----------------+
|  1 | NULL           | NULL           |
|  2 | NULL           | NULL           |
|  3 | NULL           | NULL           |
|  4 | NULL           | NULL           |
|  5 | NULL           | NULL           |
|  6 | NULL           | NULL           |
|  7 | NULL           | NULL           |
|  8 | NULL           | NULL           |
+----+----------------+----------------+

但是你可以使用 between,在我的例子中它工作正常:

select * from rezervare where checkout between '12-03-2015' and '15-03-2015';
+----+------------+------------+
| id | check_in   | checkout   |
+----+------------+------------+
|  1 | 12-03-2015 | 12-03-2015 |
|  2 | 13-03-2015 | 13-03-2015 |
|  3 | 14-03-2015 | 14-03-2015 |
|  4 | 15-03-2015 | 15-03-2015 |
+----+------------+------------+

select * from rezervare where checkout > '14-03-2015';
+----+------------+------------+
| id | check_in   | checkout   |
+----+------------+------------+
|  4 | 15-03-2015 | 15-03-2015 |
|  5 | 16-03-2015 | 16-03-2015 |
|  6 | 17-03-2015 | 17-03-2015 |
|  7 | 19-03-2015 | 19-03-2015 |
|  8 | 20-03-2015 | 20-03-2015 |
+----+------------+------------+

但真正的方法 - 更改表并使用正确的日期类型。

关于php - 从mysql查询中提取特定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195303/

相关文章:

php - 1 个查询中有 2 个数据库

php - 使用 PHP 和 html 表单向 MYSQL 插入多个输入

php - 输入( radio )值由 ~2000 字节组成,有没有更好的方法?

sql - 在 SQL 2008 中使用 CASE 更新多行

php - 将变量从 Ajax 传递到 Php

php - MYSQL 与图像一起使用?

php - 如何使用 PHP 显示表的列名?

php - 单击按钮时将数据从 MySQL 数据库加载到 HTML 文本框

sql - 在 "IN"子句中查找与记录不匹配的值

sql - Postgres 窗口函数和异常分组