如何在PHP CodeIgniter中实现以下查询?
我正在做的是从id
中选择approval
,其中level = 5
和日期时间必须与当前日期时间进行比较。
如果天数超过30天且低于61天,我需要抓取ID
。
SELECT ID FROM APPROVAL WHERE Level = 5 AND DateTime >= CURDATE() + INTERVAL 30 DAY AND DateTime < CURDATE() + INTERVAL 61 DAY;
我试过了,
$this->db->select('id');
$this->db->from('approval');
$this->db->where('level'=>5);
$this->db->where('date_and_time'>= CURDATE() + INTERVAL 30 DAY);
$this->db->where('date_and_time'< CURDATE() + INTERVAL 61 DAY);
$res=$this->db->get()->result_array();
它没有执行。
答案 0 :(得分:1)
这里now()
是当前日期。 >=1
是表存储值和当前日期之间的差。
在执行此操作之前,您应该加载日期助手$this->load->helper('date');
$this->db->select("*", FALSE);
$this->db->from('table');
$this->db->where("DATEDIFF(your_date,now()) >= 1");
$query = $this->db->get();
return $query->result();
否则,您可以像下面这样使用:
$this->db->select("*", FALSE);
$this->db->from('table');
$this->db->where("DATEDIFF(your_date,now())");
$query = $this->db->get();
return $query->result();
答案 1 :(得分:0)
您的语法不正确。
尝试
$this->db->select('id');
$this->db->from('approval');
$this->db->where('level'=>5);
$this->db->where('date_and_time >=', "CURDATE() + INTERVAL 30 DAY", false);
$this->db->where('date_and_time <', "CURDATE() + INTERVAL 61 DAY", false);
$res=$this->db->get()->result_array();
函数false
的第三个参数where
用于防止CI将您的日期计算视为字段名称,因此不会添加环境&#34;`&#34;
请参阅CI的文档:http://www.codeigniter.com/user_guide/database/query_builder.html?#CI_DB_query_builder::where
答案 2 :(得分:0)
帮助您更轻松地重复使用。
function where_between($field, $min, $max){
$CI = get_instance();
return $CI->db->where("$field BETWEEN $min AND $max");
}
从/ application / helpers /
加载保存名称的助手
$this->load->helper('yoursaved_helper');
//
$this->db->where_between('date_and_time', 30, 61);
或者您可以直接使用
$this->db->where("date_and_time BETWEEN 30 AND 61");
答案 3 :(得分:0)
在查询条件的情况下,检查单引号内的条件和条件和值之后的逗号,reference并且在此行 $(function () {
$('input').css("width", $('input').parent().width());
for(var i=0;i<3;i++)
{
$("<tr><td class='t-content'><input class='t-content t-input/>'</td><td class='t-content'><input class='t-input/>'</td><td class='t-content'><input class='t-input/>'</td><td class='t-content'><input class='t-input/>'</td></tr>").attr({ class: "a" }).appendTo('.tSheet')
}
})
中等号后面有$this->db->where('level=>', "5");
符号时出错,它应该像>
或简称>=
,如下所示
=