查询以匹配日期获取详细信息

时间:2018-05-04 12:01:59

标签: php mysql laravel-5

您好我已将字符串转换为日期格式并尝试按日期匹配并获取客户详细信息但没有任何匹配。

 $beginTimeStamp =  "1524853800";
 $endTimeStamp = "1525717800";
 $beginTime = date('Y-m-d', $beginTimeStamp);
 $beginTimeStamp = date('Y-m-d',  strtotime($beginTime . ' +1 day'));
 $endTime = date('Y-m-d', $endTimeStamp);
 $endTimeStamp = date('Y-m-d',  strtotime($endTime . ' +1 day'));

 $userDetails = DB::select('SELECT * from users where created_at >='.$beginTimeStamp.' AND created_at <= '.$endTimeStamp.'');

当我使用PHP变量时,使用下面的SQL查询来确定日期。

3 个答案:

答案 0 :(得分:1)

您的日期似乎很好,它们是sql格式。

丢失的分号我猜这只是复制粘贴中的“错误”,否则你会收到错误。

$userDetails = DB::select("SELECT * from users where created_at >={$beginTimeStamp} AND created_at <= {$endTimeStamp}");

尝试此查询。我认为错误来自您尝试将变量与查询连接起来的方式,并且您没有用双引号括起查询。

此查询也应该有效:

$userDetails = DB::select("SELECT * from users where created_at >='$beginTimeStamp' AND t1.created_at <= '$endTimeStamp'");

整个查询用双引号括起来,变量用单引号括起来。

答案 1 :(得分:0)

@Maneesh Rao,

似乎代码中的语法错误很少。

  • $endTime = date('Y-m-d', $endTimeStamp) 缺少分号。

  • '来自用户的SELECT *,其中created_at&gt; ='。$ beginTimeStamp。' AND t1.created_at&lt; ='。$ endTimeStamp。 - 为什么选择t1?

尝试一次

"SELECT * from users where created_at >='" . $beginTimeStamp."' AND created_at <='". $endTimeStamp."'";
    -

答案 2 :(得分:0)

您正在使用Laravel,因此请使用查询构建器和Carbon

$beginTimeStamp =  "1524853800";
$endTimeStamp = "1525717800"; 
$userDetails = DB::table("users")
     ->where("created_at", ">=",  Carbon::createFromTimestamp($beginTimeStamp)->addDay())
     ->where("created_at", "<=",  Carbon::createFromTimestamp($endTimeStamp )->addDay())
     ->get();