首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel雄辩的带有逗号分隔时间戳的WhereBetween?

Laravel雄辩的带有逗号分隔时间戳的WhereBetween?
EN

Stack Overflow用户
提问于 2018-10-09 22:55:47
回答 1查看 218关注 0票数 0

给出上面的图像...使用Laravel的雄辩能力-我如何查找特定的日期范围以返回该范围内的行?

我知道Laravel有一个处理传统日期字段的whereBetween函数,但由于这些是时间戳,我意识到我必须使用where('dates', '>=', $startTimestamp)where('dates', '<=', $endTimestamp)之类的东西,但我也必须将其应用于从列展开的每个日期?

感谢大家的帮助!

EN

回答 1

Stack Overflow用户

发布于 2018-10-09 23:32:52

尽管它可能是糟糕的数据库设置,但有时必须按照当前的方式来做事情-出于业务原因或延迟或其他任何原因;难看的修复可能比全面大修更好-特别是在系统很小且仍将很小的情况下,不需要过多考虑处理速度。

以下是所提出问题的解决方案,利用MySQL表连接,从该连接响应中进行选择。这也是用Laravel编写的,因此是DB静态函数。

代码语言:javascript
复制
$temp = DB::select(DB::raw("select
  leave_entries.id,
  SUBSTRING_INDEX(SUBSTRING_INDEX(leave_entries.dates, ',', numbers.n), ',', -1) dates
  from
  (select 1 n union all
   select 2 union all select 3 union all
   select 4 union all select 5) numbers INNER JOIN leave_entries
  on CHAR_LENGTH(leave_entries.dates)
     -CHAR_LENGTH(REPLACE(leave_entries.dates, ',', ''))>=numbers.n-1
     where uid = {$uid}
     AND dates >= {$start_timestamp} 
     AND dates <= {$end_timestamp}
  order by
  id, n"));

// Return the resulting table:
dd($temp);

把这个留在这里,而不是删除问题,因为这可能会对某人有所帮助。

未来的人:在你的情况下-如果你可以重做数据库模式,而不是像我的问题的评论建议的那样,那么就这样做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52724005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档