STR_TO_DATE不适用于 laravel 中由 IF 条件分隔的查询



需要从 MYSQL 获取给定的开始日期和结束日期的记录。日期在数据库中定义为 VARCHAR。如何在拉拉维尔中使用STR_TO_DATE(?, '%d/%m/%Y')

我已经尝试使用DB::raw("STR_TO_DATE(due_date, '%d/%m/%Y')")

$from_date = "12/08/2019";
$to_date = "12/12/2020";
$from_date_raw = DB::raw("STR_TO_DATE('".$from_date."', '%d/%m/%Y')");
$to_date_raw = DB::raw("STR_TO_DATE('".$to_date."', '%d/%m/%Y')");
$due_date_raw = DB::raw("STR_TO_DATE('due_date', '%d/%m/%Y')");
$query = DB::table('due_details')->where('amount', '>', 0);
if ($from_date != null && $to_date != null) {
$query->whereBetween($due_date_raw, [$from_date_raw, $to_date_raw]);
} else if ($from_date != null) {
$query->where($due_date_raw, '>=', $from_date_raw);
} else if ($to_date != null) {
$query->where($due_date_raw, '<=', $to_date_raw);
}
$data = $query->orderBy('id', 'asc')->get();

我希望这些给定日期之间的数据due_details。

当我在命令行上运行它时它可以工作,但不能从我的 GUI 运行它。

不应该在列名due_date加上引号。它工作正常。 DB::raw("STR_TO_DATE(due_date, '%d/%m/%Y'("(

最新更新