3

次のようなクエリがあります。

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

日付フィールドは日時型であり、日付が今日と同じであるレコードをガービングしたいのですが、上記、および私が疲れた他のすべてが機能しません。

datetime の時間部分を無視して、今日の日付のレコードを正しくプルする方法を教えてください。

助けてくれてありがとう

アップデート

クエリを次のように変換しました

$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 フィールドを時刻のない日付だけに変換する必要があります。DateTime 値を返すDATE()代わりに、Date 値のみを返す which を使用する必要があります。特に CodeIgniter の経験はありませんが、次のことを試してください。NOW()CURDATE()

$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 に答える