私は自分のウェブサイトにphpmyadmin3.5.2、codeigniter2.1を使用しています。
私の問題は、正確な日に追加された投稿を読み込もうとしたとき、またはその投稿の日付/時刻のみを表示したいときに発生します。
テーブル構造
CREATE TABLE IF NOT EXISTS `posts` (
`post_id` int(11) NOT NULL AUTO_INCREMENT,
`patient_id` int(11) NOT NULL,
`worker_id` int(11) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`stats` varchar(20) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`post_id`),
KEY `worker_id` (`worker_id`,`patient_id`),
KEY `patient_id` (`patient_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;
私の問題は、たとえば表示する必要があるため、この「時間」列を操作することです
1)今日の投稿を示す表(使用中
Select * from posts where date(`time`) = date(NOW())
2)今日の投稿を表示するテーブルですが、時間列は(TIME)のみを返します。これが、私の主な問題です。
select time from posts
日付と時刻の両方を返します。その列から時刻のみを返したいのですが、それでも使用できます。
where date('time') =date(now()) condition !.
だから、これを行うためのより良い方法はありますか?たとえ私がphpでこれを行うことができたとしても、それでも私はうまくいきます!。
または、時刻と日付の両方を2つの異なる列に分割した方がよいでしょうか。
--------質問の2番目の部分はcodeigniter用です----------
モデル
$this->db->select('patients.name,workers.dr_name,time(posts.time),posts.stats');
$this->db->from('posts');
$this->db->join('workers','posts.worker_id=workers.worker_id','left');
$this->db->join('patients','posts.patient_id=patients.patient_id','left');
$this->db->where('date(`time`) = date(NOW())');
return $this->db->get();
コントローラ
$this->load->model('Posts_model');
$q=$this->Visits_model->allvisits;
$this->load->library('table');
$this->load->view('welcome_message');
$qq=$q->result_array();
$qq=array('patient','Doctor','Time','Stats');
$this->table->set_heading($qq);
$this->table->set_caption('Todays Posts');
echo $this->table->generate($q);
モデルの最後のwhere条件(date = Now)を削除し、phpを使用してこのインスティードを並べ替えるにはどうすればよいですか?結果をループする必要がありますか?またはそれを行うためのよりクリーンな方法はありますか?ありがとう