Array ( [0] => Array (
[reservationid] => KHAN2016Q221
[startdate] => 2016-05-16
[enddate] => 2016-05-21
)
[1] => Array (
[reservationid] => KHAN2016Q222
[startdate] => 2016-05-18
[enddate] => 2016-05-23
)
[2] => Array (
[reservationid] => KHAN2016Q223
[startdate] => 2016-05-19
[enddate] => 2016-05-21
)
[3] => Array ( [reservationid] => KHAN2016Q224
[startdate] => 2016-05-23
[enddate] => 2016-05-27
)
)
我将提供startdate
和enddate
,并且我想返回reservationid
,其中不包括预订的日期。请帮助我。
答案 0 :(得分:0)
<强>您好,强>
我想,这取决于您使用的数据库中的日期格式。 我用AMADEUS API(Travelport)预订任务做了一些事情。通常以非常简单的形式表示:
SELECT * 来自xxxxxxx 在哪里:MyDate BETWEEN StartDate和EndDate
根据数据库,您还必须添加:
AND EndDate&gt; = StartDate
但是你必须检查数据库的日期格式和编码。
也许答案太简单但是你知道它取决于许多系统特定的参数,你还没有列出。
好的 - 我读了你的修正案1 我还没有使用CodeIgniter。但首先 - 您使用的数据库是什么?好吧,我在CodeIgniter中看到 - 它是MySQL并且通常使用UTF-8 - 但是如果它一般设置如下,请查看配置内部:
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'xxxxx',
'password' => 'xxxxx',
'database' => 'xxxxx',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
查看数据库并查看为startdate和enddate分配的字段类型。我想这是DATETIME的预订目的,你需要它几秒钟。我想要获取相应的ID,我们需要一些JOIN,我们可以在CodeIgniter的Query Builder类中找到它们。我们将进一步了解。我刚看到标签android - 这是用于android吗?这可能很重要。 当然我不知道你的代码 - 但我想你做了一些这样的查询,按照你的描述,结果不提供reservationID?在您的数据库模型中是否没有为reservationID设置主键或外键?你能查一下吗?你可以做这样的事情来获得所有预订,除了指示的间隔 - 正如我所说 - 我不知道你的数据库布局和方案等。
$this->db->select('*');
$this->db->from('reservations');
$this->db->where('startdate <=', $startdate);
$this->db->where('enddate >=', $enddate);
$query = $this->db->get();
但我不明白你想要什么。为什么在查询结果中没有得到预留ID?
祝你好运
Axel Arnold Bangert - Herzogenrath 2016
答案 1 :(得分:0)
$startdate = '2016-05-23';
$enddate = '2016-05-27';
$this->$db->select('reservationid, startdate, enddate');
$this->$db->from('reservation');
$this->$db->where('startdate >=', $startdate);
$this->$db->where('enddate <=', $enddate);
$query = $this->$db->get()->result_array();
$this->$db->trans_complete();
return $query;
Result = Array ( [0] => Array ( [reservationid] => KHAN2016Q224 [startdate] => 2016-05-23 [enddate] => 2016-05-27 ) )
以上查询返回上述结果。
但是当我提供
时$startdate = '2016-05-24';
$enddate = '2016-05-26';
然后它返回一个空数组。我想要在日期之间搜索时返回上面的reservationid。