sql - 显示给定日期的天数(date_start和date_end),如果end_date结束则应用惩罚

时间:2015-02-26 09:29:21

标签: 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中显示这个? 我是新手。我实际上正在努力解决这个问题。 请帮忙。谢谢

1 个答案:

答案 0 :(得分:0)

我不确定你是多么喜欢每天或一次点球,但你可以使用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 penalty

如果今天的日期大于due_date,则会将罚款减为0.02。

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

IF(DATEDIFF(CURDATE(), lt.due_date) > 0, DATEDIFF(CURDATE(), lt.due_date)*0.02, 0) AS penalty