1
       This is my table
       +----+---------------+
       | id | payperiod     |
       +----+---------------+
       |  1 | Weekly        |
       +----+---------------+
       |  2 | Monthly       |
       +----+---------------+

我需要使用查询来显示两个日期 NextPaydate 和 SecondNextPaydate 未来如果 payperiod 是 Weekly 那么 nextpaydate 将是 07/01/2013 和 secondnextpaydate 将是 07/07/2013

我用php代码做了如下解决方案

$payperid = 'Weekly'; // value can be changed
if ($payperid == "Weekly") {
    $rand = rand(2,6);
    $diff = 7;
}
else if ($payperid=="Monthly") {
    $rand = rand(2,28);
    $diff = rand(30,31);    
}
$opt_in = date('Y-m-d');
$ed = strtotime($opt_in);

$paydate1_day   = date("d",mktime(date("H",$ed),date("i",$ed),date("s",$ed),date('m',$ed),date('d',$ed)+$rand,date('Y',$ed)));
$paydate1_month = date("m",mktime(date("H",$ed),date("i",$ed),date("s",$ed),date('m',$ed),date('d',$ed)+$rand,date('Y',$ed)));
$paydate1_year  = date("Y",mktime(date("H",$ed),date("i",$ed),date("s",$ed),date('m',$ed),date('d',$ed)+$rand,date('Y',$ed))); 
$paydate2_day   = date("d",mktime(date("H",$ed),date("i",$ed),date("s",$ed),date('m',$ed),date('d',$ed)+($diff),date('Y',$ed)));
$paydate2_month = date("d",mktime(date("H",$ed),date("i",$ed),date("s",$ed),date('m',$ed),date('d',$ed)+($diff),date('Y',$ed)));
$paydate2_year  = date("d",mktime(date("H",$ed),date("i",$ed),date("s",$ed),date('m',$ed),date('d',$ed)+($diff),date('Y',$ed)));

$nextpaydate = $paydate1_month / $paydate1_day / $paydate1_year 

$secondnextpaydate = $paydate2_month / $paydate2_day / $paydate2_year

请帮助如何处理mysql查询(如果条件和rand函数)

4

1 回答 1

3

我正在回答您标题中的问题,因为在查看您的描述后我不确定。

如何在 Mysql 中生成随机日期

UPDATE tablename SET datefield= ’1980-01-01′ + interval rand()*80000 day

取自谷歌搜索:random date mysql


可能的解决方案

根据我对您的描述的理解:

下周领取方式:

UPDATE tablename SET datefield = datefield + interval 1 weeks

下个月领取方式:

UPDATE tablename SET datefield = datefield + interval 1 months
于 2013-06-28T12:11:32.680 回答