【问题标题】:laravel raw query date comparisonslaravel 原始查询日期比较
【发布时间】:2023-03-03 08:14:22
【问题描述】:

我有一个字符串列ddate = ('2020-06-02')time_start = ('4:25 PM'),我想将它们与date('Y-m-d H:i A') 进行比较。

date('Y-m-d H:i A') = 2021-06-02 01:14 AM...
我想要的是显示所有行 ddate+time_start > date('Y-m-d H:I A')

我的 where 子句是:

->whereRaw('CONCAT(event_date, " ", time_start) > DATE("Y-m-d H:i A")')

但结果仍然显示“2021-06-02 01:14 AM”以下的所有日期

我也试过

->whereRaw('DATE("Y-m-d H:i", CONCAT(event_date, " ", time_start)) > DATE("Y-m-d H:i")')

但我遇到了语法错误。

我的第二个查询是否已经正确但语法错误?

如果没有,我如何实现我想要的?

【问题讨论】:

  • 首先将您的两个日期转换为相同的格式,然后您可以比较它们。尝试使用 date("d/m/Y", strtotime($str));

标签: laravel laravel-query-builder


【解决方案1】:

如果您使用 php 传递当前日期,则必须这样做:

->whereRaw('CONCAT(event_date, " ", time_start) >'. date("Y-m-d H:i A"))

如果你想让 mysql 处理当前日期,请使用 now()

->whereRaw('CONCAT(event_date, " ", time_start) > now()')

【讨论】:

  • 第二个为我做了。我刚刚注意到,如果您将 now() 包含在字符串中,它会在连接 '....' 时从 mysql 变为 now() 。 now() 是碳
【解决方案2】:

MySQL DATE() 函数用于从日期时间中提取日期部分。改用 PHP 日期函数,也可以使用 Carbon。

->whereRaw("CONCAT(event_date, ' ', time_start) > " . date('Y-m-d g:i A'))

【讨论】:

    猜你喜欢
    • 2013-09-16
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-18
    • 2013-02-09
    • 2013-11-24
    相关资源
    最近更新 更多