【问题标题】:Fetch records with date range as filter from column with date datatype in Oracle SQL从Oracle SQL中具有日期数据类型的列中获取具有日期范围的记录作为过滤器
【发布时间】:2021-07-24 06:18:04
【问题描述】:

我在 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

正在实施的过滤器有什么问题吗?

【问题讨论】:

  • 感谢您的建议!但我不在 12c Oracle 上工作。

标签: sql oracle yii2 yii2-advanced-app


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多