1

我有这样的代码:

   function mgl_get_by($col,$id)
            {    
            $this->db->select('*');
            $this->db->from('global_info');
            $this->db->join('ad', 'id_ad = id_global_info');
            $this->db->where('info_type_id', 1);
            $this->db->where($col, $id);
            $this->db->or_where("$col REGEXP $id");
            $this->db->order_by('paid', 'desc');
            $this->db->order_by('date_created', 'desc');  
            $q = $this->db->get();        
            return $q = $q->result_array();   
    }

$col是表中行的名称,$id是查询的唯一 ID。在大多数情况下它是唯一的数字,但是我在这个表中有日期行,并且在表中它作为时间戳插入,但是在执行查询时它需要选择所选日期的所有匹配项(例如它需要选择所有数据从 2012 年 6 月 11 日开始)。我该怎么做(我不熟悉 REGEXP)?

4

2 回答 2

1

我从未见过使用 REGEXP 完成此操作。

如果你想要某一天的一切,你真正想要的是:
2012-06-11 <= (date) AND (date) < 2012-06-12

检查 $col,如果它是您的日期列,请执行日期范围,如果不是,请执行您已有的 where 子句。

于 2012-06-11T08:34:42.353 回答
1

我认为您在这里不需要 RegExp -LIKE就可以了。如果您的日期存储为时间戳,您应该这样做FROM_UNIXTIME($col) LIKE '2012-06-11'

编辑:虽然,它效率不高。更好的方法是将时间戳作为整数进行比较:

$col >= UNIX_TIMESTAMP('2012-06-11 00:00:00') AND $col < UNIX_TIMESTAMP('2012-06-12 00:00:00')
于 2012-06-11T08:35:36.187 回答