【问题标题】:Laravel postgres current_timestampLaravel postgres current_timestamp
【发布时间】:2016-10-16 02:49:06
【问题描述】:

您好,我在使用 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();

生成这样的sql

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 时它工作正常,但 laravel 给我错误
无效的日期时间格式:7 错误:类型时间戳的无效输入语法:“date_trunc('hour', CURRENT_TIMESTAMP) "

我的桌子是这样的

令牌

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

token_queue

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

感谢您的任何建议。

【问题讨论】:

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

标签: postgresql laravel-5 timestamp


【解决方案1】:

我对 Laravel 了解不多,但通过谷歌搜索给我的印象是 DB::Raw 在调用 whereBetween 时不会在 RHS 上受到尊重。

尝试使用whereRaw() 在原始 SQL 中添加您想要的 where 子句。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-05
    • 2011-08-26
    • 2016-04-03
    • 1970-01-01
    • 2016-05-30
    • 2022-01-11
    • 1970-01-01
    • 2019-11-18
    相关资源
    最近更新 更多