-1

我正在为我的网站使用 phpmyadmin 3.5.2、codeigniter 2.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)表格显示今天的帖子,但时间列仅返回(时间),这就是我的主要问题,好像我这样做了

select time from posts

返回日期和时间,我只想从该列返回时间,但仍然可以使用

where date('time') =date(now()) condition !.

那么有没有更好的方法来做到这一点?即使我可以在 php 中做到这一点,我仍然可以!

或者如果我将时间和日期分成 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);

如何删除模型中的最后一个条件(日期=现在)并使用 php 对此进行排序?我必须循环结果吗?或者有更清洁的方法吗?谢谢

4

1 回答 1

2

就像 MySQL 的DATE()函数只返回DATEa 的一部分一样TIMESTAMP,它的TIME()函数也只返回TIME一部分:

SELECT TIME(time) FROM posts WHERE DATE(time) = CURRENT_DATE
于 2012-12-05T15:37:19.957 回答