【问题标题】:Laravel 5.1 Invalid datetime format: 7 ERROR: invalid input syntax for type date errorLaravel 5.1 无效的日期时间格式:7 错误:类型日期错误的无效输入语法
【发布时间】:2016-02-10 20:43:10
【问题描述】:

我一直在使用 eloquent 时遇到问题,它不断返回错误。下面是我尝试在 laravel 中运行的查询。

$actives = ProjectVersion::join('version_employees as ve', 've.report_id' ,'=', 'project_versions.id')
        ->join('employees as e', 've.employee_id', '=', 'e.id')
        ->whereBetween(\DB::raw("'1985-05-27'::date"),[
            \DB::raw("to_date(timeline->>'start_time', 'YYYY-MM-DD')"),
            \DB::raw("to_date(timeline->>'release_time', 'YYYY-MM-DD')")])
        ->groupBy('e.name')
        ->select(\DB::raw('count(e.id), e.name'))
        ->get();

现在返回一个错误

Invalid datetime format: 7 ERROR: invalid input syntax for type date: "to_date(timeline->>'start_time', 'YYYY-MM-DD')" 

错误信息返回的完整查询是

SELECT count(e.id), e.name 
FROM "project_versions" inner join "version_employees" as "ve" on "ve"."report_id" = "project_versions"."id" inner join "employees" as "e" on "ve"."employee_id" = "e"."id" 
WHERE '1985-05-27'::date 
     BETWEEN to_date(timeline->>'start_time', 'YYYY-MM-DD')      
     AND to_date(timeline->>'release_time', 'YYYY-MM-DD') 
GROUP BY "e"."name"

问题是,当我在 pgadmin 中运行此查询时,它运行良好并返回我想要的结果。

我已经被困了好几个小时来调试这个。知道问题出在哪里吗?

【问题讨论】:

    标签: postgresql eloquent laravel-5.1


    【解决方案1】:

    首先,你在所有这些 Raw 语句中使用它的方式并不是很有说服力;-)

    尝试使用 Carbon 类:Carbon::now()->toDateString() 将返回 Y-m-d 格式的日期。

    对于 where 子句,如果我正确理解了您的查询,您可以使用 2 个 where 子句代替带有原始 SQL 的 whereBetween:->where('start_time', '>', $start_time_preprocessed_by_carbon)->where('release_time', '<', $release_time_preprocessed_by_carbon)

    而且您似乎想要计数,这意味着您可以以 ->count() 而不是 ->get() 结尾

    我很想给你完整的查询,但无法完全破译它。然而,这些实现应该会给你一个正确的方向!它们将帮助您进一步抽象查询,以便 Laravel 的内部查询生成器将代码转换为您的数据库的正确语法!

    【讨论】:

    • 谢谢,但这个错误困扰了我好几个小时,所以我放弃了,最后我使用了原始查询 (DB::select(DB::raw())。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2017-08-26
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多