php - 工作日和周末价格不同

标签 php mysql

我有一个表订单,其中包含有关租车日期范围和汽车租赁价格的信息。

Table Orders

Table Cars

价格由以下方式给出:

SELECT ROUND((points * (SELECT DATEDIFF('$dateTo', '$dateFrom'))) * 0.95) AS price

$dateTo$dateFrom 是 PHP 变量,用于保存用户给定日期范围的值。换句话说:

$dateTo = $_POST['date-to'];
$dateFrom = $_POST['date-from'];

因此,每天您都会获得租金 5% 的折扣,但我还想检查日期范围是否跨越周六或周日。如果租金是从周五到周一,我想在总价上额外加 10 点,因为日期范围包括周六。

这可能吗?

最佳答案

您可以使用存储过程来实现此目的,其中您的查询可以嵌套在循环内以检查它是否是工作日。 或者,您可以使用 PHP 检查日期范围内是否有周末:

<?php 

    /**
     * FUNCTION THAT CHECKS IF A WEEKEND EXISTS BETWEEN 2 GIVEN DATES
     * @param string $startDate 
     * @param string $endDate 
     * @return boolean
     */
    function dateRangeContainsWeekend($startDate, $endDate) {
        $tsDate  = strtotime($startDate);
        $diff    = date_diff(date_create($startDate), date_create($endDate));
        $dDiff   = $diff->days;

        if ($dDiff > 0) {
            for ($i = 0; $i < $dDiff; $i++) {
                $timeDiff  = 24 * 60 * 60 * $i;
                $sDate     = $tsDate + $timeDiff;
                $weekDay   = date('w', $sDate);

                if (($weekDay == 0 || $weekDay == 6)) {
                    return ($weekDay == 0 || $weekDay == 6);
                }
            }
        }
        return false;
    }

    // TESTS - - - -
    $d1 = "2016-05-02";
    $d2 = "2016-05-10";
    var_dump( dateRangeContainsWeekend($d1, $d2) );  // DUMPS true

    // NOW; IF YOU KNOW THAT THE GIVEN DATES CONTAIN A WEEKEND,
    // YOU MAY MODIFY YOUR QUERY TO REFLECT YOUR DESIRES 
    $factor = "0.95";  //CHOOSE YOUR FACTOR HERE...
    $sql    = "SELECT ROUND((points * (SELECT DATEDIFF('$dateTo', '$dateFrom'))) * $factor) AS price";

关于php - 工作日和周末价格不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989205/

相关文章:

php - Flash AS3图像处理和保存应用程序的技术要求

Mysql 查找两个日期列之间开始和结束日期范围的出现次数

java - 如何正确捕获 MySQLIntegrityConstraintViolationException?

mysql - mysqldump 的复制问题

php - SQL 查询 - 获取两个表的不同计数

php - 如何使用 PHP heredoc 作为数组值?

php - 如何用sql数据填充chart.js?

php - 尝试将下拉列表中的数据作为外键插入另一个表中。未插入数据

mysql - 为什么我不能在 mysql 中使用名称 check 创建表

php - CakePHP:控制台命令中的自定义错误报告