php - sql - 显示给定日期(date_start 和 date_end)的天数跨度,如果 end_date 超过则应用惩罚

标签 php mysql date sum

帮我修改我的代码。 这是我的 sql 代码:

    SELECT lt.loan_amount, lt.rel_date, lt.due_date,
    DATEDIFF( lt.rel_date, lt.due_date ) AS span, 
    (((DATEDIFF( lt.due_date, lt.rel_date )) + curdate()) * 0.02) AS penalty
    FROM loan_transaction lt, members m
    WHERE lt.MID = m.MID

但是输出一团糟。我只是想说,当 due_date 结束时,将适用 0.02 罚款。

    (((DATEDIFF( lt.due_date, lt.rel_date )) + curdate()) * 0.02) AS penalty..

我将如何在 php mysql 中显示它? 我对此很陌生。我实际上正在为此苦苦挣扎。 请帮助。谢谢

最佳答案

我不确定你到底喜欢多惩罚,比如每天一次还是一次,但你可以使用 IF

SELECT lt.loan_amount, lt.rel_date, lt.due_date,
    DATEDIFF( lt.rel_date, lt.due_date ) AS span, 
    IF(DATEDIFF(lt.due_date, lt.rel_date) > 0, 0.02, 0) AS penalty
    FROM loan_transaction lt, members m
    WHERE lt.MID = m.MID

这是考虑到您正在尝试将 due_date 与 rel_date 进行比较以考虑惩罚。如果 due_date 大于 rel_date,这将返回 0.02 的惩罚。

如果要与今天的日期进行比较,可以使用

IF(DATEDIFF(CURDATE(), lt.due_date) > 0, 0.02, 0) AS 惩罚

如果今天的日期大于 due_date,这将返回 0.02 的惩罚。

编辑:要在 due_date 之后的每一天应用 0.02 的罚款,您应该使用以下内容:

IF(DATEDIFF(CURDATE(), lt.due_date) > 0, DATEDIFF(CURDATE(), lt.due_date)*0.02, 0) 作为惩罚

关于php - sql - 显示给定日期(date_start 和 date_end)的天数跨度,如果 end_date 超过则应用惩罚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738667/

相关文章:

PHP 从 MySQL 检索输出

mysql - 从列中删除前 3 个字母

java - com.mysql.jdbc.MysqlDataTruncation : Data truncation: Incorrect datetime value: 'Mon Feb 11 00:00:00 IST 2013' for column 'INVOICE_DATE' at row 1

mysql - 使用字符串日期的转换更新日期时间

excel - 将 Unix 纪元时间中的整列转换为 Excel 日期 (YYYY-MM-DD) 形式 VBA

hibernate - 如何在 hibernate 中执行日期操作

php - PHPUnit 的@ticket 注解有什么作用?

php - 使用 http GET php 从数组中获取一个元素

php - 当左连接找不到匹配项时显示空结果

mysql - 卡在具有多种表的数据库结构中