3

我有一个查询如下:

$query = $this->db->get_where('Bookings', array('Status' => 0, 'Driver_ID' => null, 'Date'=> 'NOW()'));

Date 字段是一个日期时间类型,我想在它们的日期与今天相同的地方添加记录,但是上面的内容以及我厌倦的所有其他内容都不起作用。

谁能告诉我如何正确提取今天日期的记录,而忽略日期时间的时间部分。

谢谢你的帮助

更新

我现在已将查询转换为以下

$start = date('Y-m-d 00:00:00');
    $end = date('Y-m-d 23:59:59');
    $query = $this->db->get_where('Bookings', array('Status' => 0, 'Driver_ID' => null, 'Date' => 'BETWEEN '.$start.' AND '.$end));

但是仍然没有运气,只是重新调整没有结果!

4

4 回答 4

4

我会尝试

$this->db->where('Status', 0);
$this->db->where('Driver_ID', null);
$this->db->where('DATE(Date)', date('Y-m-d'), FALSE);
$query = $this->db->get('Bookings');
于 2012-04-17T14:51:23.273 回答
2
$params = array('Status' => 0, 'Booking_Date'=> date('Y-m-d'));
$this->db->query('SELECT * FROM Bookings WHERE Status=? AND Driver_ID Is Null AND    Date(Booking_Date) = ?',$params);

认为这会奏效

于 2012-04-17T14:43:59.897 回答
1

在您的代码中,您说您希望 DateTime 字段为NOW(). 问题在于它NOW()给出了一个 DateTime 值,即“YYYY-MM-DD”形式的日期,后跟“HH:MM:SS”形式的时间。

您的查询正在做的是说“给我记录今天的日期,在这一刻”。你想要的是“给我今天日期的记录”。

这就是为什么在数据库中使用 DateTime 字段通常很麻烦。您必须使用 MySQL 函数将您的 Date 字段转换为日期,而不是时间,DATE()而不是NOW()返回 DateTime 值,您将希望使用CURDATE()仅返回 Date 值。我没有专门使用 CodeIgniter 的经验,但请尝试:

$query = $this->db->get_where('Bookings', array('Status' => 0, 'Driver_ID' => null, 'DATE(Date)'=> 'CURDATE()'));

(我不知道您是否可以将 MySQL 函数应用于带有 的字段$this->db->get_where)。

于 2012-04-17T13:45:13.443 回答
0

MySql 标准日期时间格式是date("Y-m-d H:i:s").

因此,您的查询将需要获取当天的所有内容,例如 where 子句;

SELECT * FROM `Bookings` WHERE `Date` BETWEEN date("Y-m-d 00:00:00") AND date("Y-m-d 23:59:59")
于 2012-04-17T13:38:09.713 回答