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
Php 如何查询开始日/月和结束日/月之间的价格_Php_Mysql - Fatal编程技术网

Php 如何查询开始日/月和结束日/月之间的价格

Php 如何查询开始日/月和结束日/月之间的价格,php,mysql,Php,Mysql,天是4,月是10。 如果月份在开始月份和结束月份范围之间,并且它们的日期也在范围之间,我如何查询价格 开始日、开始月、结束日和结束月在数据库中可以是可变的 数据库的屏幕截图: 我当前的查询: $price=FrontendModel::getDB()->getVar('SELECT p.price FROM appartments_pricing as p 其中(p.days\u start>=?和p.months\u start>=?)和(p.days\u end确定另一个选项: mysql

天是4,月是10。 如果月份在开始月份和结束月份范围之间,并且它们的日期也在范围之间,我如何查询价格

开始日、开始月、结束日和结束月在数据库中可以是可变的

数据库的屏幕截图:

我当前的查询:

$price=FrontendModel::getDB()->getVar('SELECT p.price FROM appartments_pricing as p
其中(p.days\u start>=?和p.months\u start>=?)和(p.days\u end确定另一个选项:

mysql> select
           ap_id, price,
           date(concat('2000', '-', months_start, '-', days_start)) as start,
           date(concat('2000', '-', months_end, '-', days_end)) as end
           from x
           having date('2000-10-4') > start and date('2000-10-4') < end;

+-------+-------+------------+------------+
| ap_id | price | start      | end        |
+-------+-------+------------+------------+
|    32 |    15 | 2000-01-01 | 2000-12-31 |
+-------+-------+------------+------------+
mysql>select
ap_id,价格,
日期(concat('2000','-',月开始,'-',天开始))作为开始,
日期(concat('2000','-',月底',-',日底))作为结束日期
从x
日期('2000-10-4')>开始,日期('2000-10-4')<结束;
+-------+-------+------------+------------+
|ap|U id |价格|开始|结束|
+-------+-------+------------+------------+
|    32 |    15 | 2000-01-01 | 2000-12-31 |
+-------+-------+------------+------------+

如果您希望一天在
天开始的范围内,那么您当前的查询有什么问题?我从未得到想要的结果。价格为“15”的记录谢谢你的回复,但是我的数据库结构是不同的。所以你的查询将无法与我的数据库结构一起工作。或者说我的数据库结构是不可能的吗?除了ap_id之外,它是相同的。将其更改为appartment_id就够了。不是真的,我有两个额外的列。我分别存储开始日、开始月、结束日和结束月。但是nachito g我们有一个有效的解决方案。我知道,但看看查询:)它通过连接其他字段来创建虚拟开始/结束字段。然后使用正常的日期比较功能。我怀疑这个解决方案不正确。试试(11月9日>10月20日)。月份(11>10)将为真,但日期比较将失败(9>20).我建议您在@jancha@romanish如果我们假设“天开始月开始”是开始日期,“天结束月结束”是结束日期,那么是的,我同意jancha的解决方案更好。问题是模糊的,“月在开始月和结束月范围之间,天也在范围之间?”并没有真正表明起始日和起始月是否相关。
$price = FrontendModel::getDB()->getVar('SELECT p.price FROM
appartments_pricing as p WHERE (p.days_start <= ? AND p.months_start <= ?) AND
(p.days_end >= ? AND p.months_end >= ?) AND p.appartment_id = ?',
array($day,$month, $day, $month, $appartment_id));