当前位置: 首页 > 知识库问答 >
问题:

如何在laravel mysql中获取包括空日期在内的入职、离职日期内的员工列表

丁高峯
2023-03-14

我有一个employees表和一个连接到另一个表,其中有加入日期和离职日期,默认值为空,所以当我选择一个日期时,比方说今天,我想检索所有选择的日期介于其加入日期和离职日期之间的员工,但很多员工的离职默认值将为空。因此查询不起作用。下面是我当前的代码

\DB::table('caregivers')
    ->join('caregiver_professional_details',function($q){
            $q->on('caregivers.id', '=','caregiver_professional_details.caregiver_id')
    ->where('caregiver_professional_details.role','=','Caregiver')
    ->whereDate('caregiver_professional_details.date_of_joining','<=',$date           
    ->whereDate('caregiver_professional_details.resignation_date','>=',$date);
})

因此,当我选择小于或等于2018年12月20日的任何日期时,将同时显示1和2。如果我选择21或更高,则只显示2

共有1个答案

张伯寅
2023-03-14

您的查询应该如下所示:

\DB::table('caregivers')
  ->join('caregiver_professional_details',function($q){
        $q->on('caregivers.id', '=','caregiver_professional_details.caregiver_id')
  ->where('caregiver_professional_details.role','=','Caregiver')
  ->where(function($r) use ($date){
        $r->whereDate('caregiver_professional_details.date_of_joining','<=',$date)
          ->orWhereNull('caregiver_professional_details.date_of_joining');
   })
   ->where(function($r) use ($date){
        $r->whereDate('caregiver_professional_details.resignation_date','>=',$date)
          ->orWhereNull('caregiver_professional_details.resignation_date');
   });
})
 类似资料:
  • 问题内容: 我需要计算两个日期之间的营业日。例如:我们7月4日放假。所以如果我的日期是date1 = 07/03/2012 date2 = 07/06/2012 由于7月4日为节假日,因此,这些日期的黑白工作日应该为1。 我有一种下面的方法来计算工作日,该工作日仅计算周末,而不计算假期。还有什么方法可以计算假期吗....请帮我。 问题答案: 假设您有一个包含所有假期的列表。 只需在您的条件中添加条

  • 问题内容: 我已经尝试了堆栈溢出中给出的示例 如何在java中获取两个日期之间的日期列表 该代码运行完美。但是有一个小问题。我的清单中也没有结束日期。如何选择包含/排除开始日期和结束日期?是吗,我可以使用remove()和add()手动完成此操作,或者JodaAPI可以为我做到这一点吗? 问题答案: 基于API,似乎没有直接选择include的方法。 一种可能是,只需将+1加到天数上即可。

  • 问题内容: 我想要一个开始日期和结束日期之间的日期列表。 结果应为所有日期的列表,包括开始日期和结束日期。 问题答案: 一次添加一天直到达到结束日期: 实现自己的迭代器也可以做到这一点并不难,那就更好了。

  • 问题是我不知道如何在这里做一个查询或php处理来实现这一点。 我所能想到的就是这样的事情(我每个月都运行这个查询,传递年和月作为参数) 但这是不可能的,主要是因为必须是列而不是变量。 有人想吗? 这给了我从2013年6月开始的所有记录,你肯定可以为你喜欢的任何变量隐藏字面变量

  • 问题内容: 此代码段始终将日期解析为当前时区,而不是解析为字符串中的时区。 它输出: 而我期望: 有什么想法我做错了吗? 问题答案: 好吧,进一步Google搜索给了我自己的问题的答案:use ,如下所示: 这有效。

  • 问题内容: 在我的应用程序中,用户应从选择日期。问题是生成此列​​表。例如,我需要 2010年至2013年 或 6月至8月 之间的所有日期(期间可能是 day , month , year )。是否有任何方法可以获取该数据? 范例:我需要 2013年1月1* 日 至2013年1月1 日之间的日期 * 2013年1月1日 2013年2月1日 2013年3月1日 2013年4月1日 2013年5月1日