Postgresql Laravel postgres当前时间戳

Postgresql Laravel postgres当前时间戳,postgresql,laravel-5,timestamp,Postgresql,Laravel 5,Timestamp,您好,我在当前时间戳查询中遇到问题,我正在使用laravel和postgres。我的问题是这样的 $min_max_avg = DB::table('token_queue') ->join('token', 'token.id', '=', 'token_queue.token_id') ->select(DB::raw('MIN(serving_e

您好,我在当前时间戳查询中遇到问题,我正在使用laravel和postgres。我的问题是这样的

 $min_max_avg = DB::table('token_queue')                             
    ->join('token', 'token.id', '=', 'token_queue.token_id')                             
    ->select(DB::raw('MIN(serving_end_time - serving_start_time) AS min_total_serving_time'))                                                       
    ->whereBetween('token.generated_time',[DB::raw("date_trunc('hour', CURRENT_TIMESTAMP)"), 
                                           DB::raw("date_trunc('hour', CURRENT_TIMESTAMP + interval '1 hour')")])
    ->first();
select 
MIN(serving_end_time - serving_start_time) AS min_total_serving_time
from "token_queue" inner join "token" on "token"."id" = "token_queue"."token_id" 
where "token"."generated_time" between date_trunc('hour', CURRENT_TIMESTAMP) and date_trunc('hour', CURRENT_TIMESTAMP + interval '1 hour') 
这会生成这样的sql

 $min_max_avg = DB::table('token_queue')                             
    ->join('token', 'token.id', '=', 'token_queue.token_id')                             
    ->select(DB::raw('MIN(serving_end_time - serving_start_time) AS min_total_serving_time'))                                                       
    ->whereBetween('token.generated_time',[DB::raw("date_trunc('hour', CURRENT_TIMESTAMP)"), 
                                           DB::raw("date_trunc('hour', CURRENT_TIMESTAMP + interval '1 hour')")])
    ->first();
select 
MIN(serving_end_time - serving_start_time) AS min_total_serving_time
from "token_queue" inner join "token" on "token"."id" = "token_queue"."token_id" 
where "token"."generated_time" between date_trunc('hour', CURRENT_TIMESTAMP) and date_trunc('hour', CURRENT_TIMESTAMP + interval '1 hour') 
因此,当我在pgAdmin中运行此sql时,它可以正常工作,但不会给我带来错误
无效的日期时间格式:7错误:时间戳类型的输入语法无效:“日期(“小时”,当前时间戳)”

我的桌子是这样的

令牌

id       | generated_time
196618   | 2016-10-15 01:02:48.963
196619   | 2016-10-15 01:02:50.569
196620   | 2016-10-15 01:03:12.931
196621   | 2016-10-15 02:03:17.037
196622   | 2016-10-15 02:22:55.782
196623   | 2016-10-15 02:24:57.477
196624   | 2016-10-15 03:23:00
令牌队列

id | serving_start_time      | serving_end_time        | token_id
1  | 2016-10-15 01:02:48.963 | 2016-10-15 01:03:02.69  | 196618

谢谢你的建议。

我对拉威尔不太了解,但通过谷歌搜索给我的印象是,在打电话给
时,RHS不会尊重DB::Raw

尝试使用
whereRaw()
在原始SQL中添加所需的where子句

->whereRaw("token.generated_time between date_trunc('hour', CURRENT_TIMESTAMP) and date_trunc('hour', CURRENT_TIMESTAMP + interval '1 hour')")

我不认为它正在生成您所认为的SQL。我认为这是生成一个包含占位符的where子句,然后将表达式提供给占位符。