Запрос, чтобы получить детали к соответствующей дате - PullRequest
0 голосов
/ 04 мая 2018

Привет! Я преобразовал строку в формат даты и пытаюсь сопоставить ее по дате и получить данные клиента, но ничего не найдено.

 $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.'');

Дата наступает при использовании запроса ниже SQL, когда я использую переменную PHP.

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Ваши даты выглядят нормально, они в формате 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'");

Весь запрос заключен в двойные кавычки, а переменные заключены в одинарные кавычки.

0 голосов
/ 04 мая 2018

Вы используете 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();
0 голосов
/ 04 мая 2018

@ Маниш Рао,

Похоже, несколько синтаксических ошибок в коде.

  • $endTime = date('Y-m-d', $endTimeStamp) отсутствует точка с запятой.

  • 'SELECT * от пользователей, в которых созданный_ат> ='. $ BeginTimeStamp. ' AND t1.created_at <= '. $ EndTimeStamp. - <strong>Почему т1?

Попробуйте один раз

"SELECT * from users where created_at >='" . $beginTimeStamp."' AND created_at <='". $endTimeStamp."'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...