从 Oracle SQL 中具有日期数据类型的列中获取具有日期范围的记录作为过滤器

问题描述

我在 oracle 中有一个表,它有一个名为“created_at”的列,其中时间戳为数据类型,current_timestamp 为认值,并且该列也不能为空。后来,需要将此列修改为 datatype = date,以今天的日期作为认值,并且该列也保持“NOT NULL”。我尝试了以下方法

ALTER TABLE abc.xyz
MODIFY "CREATED_AT" DATE DEFAULT sysdate NOT NULL;

以下是我在视图文件中应用的过滤器:

 'filter' => DaterangePicker::widget([
                'name' => 'daterange','startAttribute' => 'report_date_from','endAttribute' => 'report_date_to','presetDropdown'=>false,'hideInput'=>true,'options' => [
                    'placeholder' => 'Select date ...',],])

以下是我在搜索模型类中传递给搜索函数查询参数:

$query
        ->andFilterWhere(['between','CREATED_AT',$this->start_date,$this->end_date])
        ->andFilterWhere(['like','NAME',$this->NAME])
...

以下是遇到的错误

Getting unkNown property: frontend\models\SearchModel::start_date

正在实施的过滤器是否有任何问题?

解决方法

通过删除 $this 关键字解决:

    $query
        ->andFilterWhere(['between','CREATED_AT',$start_date,$end_date])

因为 $start_date 和 $end_date 是局部变量而不是数据库列。 :D 按日期范围过滤器获取数据的流程没有任何问题。我的天!