【问题标题】:query builder returns incorrect datetime compare query results查询生成器返回不正确的日期时间比较查询结果
【发布时间】:2021-06-12 18:53:37
【问题描述】:

我有这个问题:

return DB::table('electricity_meters')
->where('electricity_meters.id', 16)
->leftJoin('service_instances', 'service_instances.electricity_meter_id', '=', 'electricity_meters.id')
->leftJoin('readings', 'electricity_meters.kwh_param_id', '=', 'readings.parameter_id')
->where('readings.taken_at', '>', 'service_instances.active_to')
->select([
    'readings.taken_at',
    'service_instances.active_to',
])
->get();

注意'readings.taken_at', '>', 'service_instances.active_to',但不知怎么的结果是……

[
    {
        taken_at: "2021-02-16 23:59:59",
        active_to: "2021-03-28"
    },
    ...
]

我在这里错过了什么?

【问题讨论】:

    标签: mysql laravel laravel-query-builder


    【解决方案1】:

    我想你想在两列之间进行比较,如果那样,你应该使用whereColumn:

    return DB::table('electricity_meters')
    ->where('electricity_meters.id', 16)
    ->leftJoin('service_instances', 'service_instances.electricity_meter_id', '=', 'electricity_meters.id')
    ->leftJoin('readings', 'electricity_meters.kwh_param_id', '=', 'readings.parameter_id')
    ->whereColumn('readings.taken_at', '>', 'service_instances.active_to')
    ->select([
        'readings.taken_at',
        'service_instances.active_to',
    ])
    ->get();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 1970-01-01
      相关资源
      最近更新 更多