简体   繁体   中英

How to get the nearest date match in PHP from a SQL Database

I am currently trying to get the nearest match of 2 sets of dates (dmY) against a SQL database and then out put the matched InterestRate column name.

I have an example of my current code, this is mostly pseudo code and trying a few things out. If that helps.

//$XSS_BLOCK2 = "05-05-2016";
$XSS_BLOCK3 = "20-05-2016"; //By the way The '2016-05-20' is user input so it will not be '2016-05-20' all the time, so it could be anything '2014-08-15'.
$today = date('d-m-Y');
$interest = 0;
$securesqlstring = $secureconn->prepare("SELECT * FROM LatePaymentRates");
$securesqlstring->execute();
while($row=$securesqlstring->fetch())
  {
     echo $row['StartDate'];
     echo $row['EndDate'];
     echo $row['InterestRate'];

    $varsin = array($XSS_BLOCK3, $today);
    $DateRange = new DateTime($varsin);
    $databasein = array($row['StartDate'], $row['EndDate']);
    $DateRanges = new DateTime($databasein);
    if(($DateRange >= $DateRanges) && ($DateRange >= $DateRanges)) {

      $dayrate = $row['InterestRate'] * $XSS_BLOCK3 / 36500;


    $start_date = new DateTime($DateRange);
    $end_date = new DateTime($DateRanges);
    $dd = date_diff($end_date, $start_date) * $dayrate;
    $interest += $dayrate;
    }

  }
  $LatePaymentInterest = $interest;
if (!$securesqlstring) // If there is an error it will show this message.
  {exit("Error in the SQL");}

Do we really need to spell this one out? I feel like I must be missing something...

SELECT * FROM my_table WHERE '2016-05-20' BETWEEN startdate AND enddate;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM