mysql查询从第二天下午4点到早上6点,以及从早上6点到下午4点再次选择注册用户

时间:2018-05-31 09:29:07

标签: php mysql sql datetime cron

我开发了一个php scrpit,可以自动创建excel用户列表,  每天下午4点和早上6点 问题是选择查询,因为每个列表都包含旧的注册用户,+在cron作业中自动选择的新注册用户。
我需要的是只选择从第二天下午4点到早上6点注册的用户,以及为同一天早上6点到下午4点注册的用户选择的另一个用户。

任何方向或提示都会很棒 谢谢。

<?php

$conn = new mysqli('localhost', 'user', 'pass');  
mysqli_select_db($conn, 'dbname');  

$setSql = "SELECT * FROM sys";
$setRec = mysqli_query($conn,$setSql);

$columnHeader ='';
$columnHeader = "UID"."\t"."Name"."\t"."Number"."\t";


$setData='';

while($rec = mysqli_fetch_row($setRec))  
{
  $rowData = '';
  foreach($rec as $value)       
  {
    $value = '"' . $value . '"' . "\t";
    $rowData .= $value;
  }
  $setData .= trim($rowData)."\n";
}

date_default_timezone_set('Europe/Tirane');

echo 'Current Server Time:' . date('m/d/Y H:i:s a') ;

$name='export_'.date('m-d-Y_hia').'.xls';
$xen=ucwords($columnHeader)."\n".$setData."\n";
echo $xen;
file_put_contents($name, $xen);

?>

上面的代码每天下午4点和早上6点在cron作业中执行 它应该如何工作:
早上6点执行 - &gt;选择从前一天下午4点到早上6点(脚本运行时)注册的所有用户 下午4点执行 - &gt;选择当天早上6点到下午4点注册的所有用户。

脚本创建一个不同的excel文件,文件名为日期+创建日期和时间,并将文件保存在服务器中。 所有可用文件都显示在另一个页面上,可以下载给用户。

它实际如何运作:
script1在下午4点执行 - &gt;选择所有注册到下午4点的用户 script2在第二天早上6点执行 - &gt;从script1中选择所有用户+从第二天下午4点到早上6点完成的新注册 script1再次在下午4点执行 - &gt;从早上6点到下午4点选择用户,没有从script2中选择相同的用户。

我希望script2取消选择或不选择script1将返回的相同用户,这意味着script1和script2输出中将没有相同的数据。

编辑:也许我需要添加一个日期&amp;表中的时间列是为了实现这个吗?

edit2:更清楚的解释:
&#39;用户X&#39;在下午3点注册,因此在下午4点执行的脚本将返回&#39; userX&#39; &#39; userY&#39;在晚上7点注册,所以在早上6点执行的脚本应仅返回&#39; userY&#39;而不是&#39; userX&#39; &#39; userZ&#39;在上午10点注册,因此在下午4点执行的脚本将仅返回&#39; userZ&#39;。

1 个答案:

答案 0 :(得分:1)

如果你能提供一些样本数据和你想要的输出会更好,但是 根据我对你的问题的理解,下面的代码将适合你

if(hour(current_timestamp)) =6
Then 
     select users 
     from table_name 
     where hour(datetime) between 6 and 15; 
elseif(hour(current_timestamp)) =16
Then  
     select users 
     from table_name 
     where hour(datetime) between 6 and 15; 
end if;