我们的团队正在为教师开发一个贷款系统,他们的摊销会在发薪日、每月的 10 日和 25 日扣除。提交在线申请表后,贷款表中会有一个 dateapplied
列,用于存储教师申请贷款的日期。我们想要的是根据 dateapplied
找到该月最近的 25 日或 10 日,并将其存储到另一列 startdeduct
中。
例如,教师今天(2015-10-23)
申请了一笔贷款,该贷款将存储在dateapplied
中。同时我想将 (2015-10-25)
存储在 startdeduct
中,这是何时开始扣除。
谢谢!!!
最佳答案
试试这个:
SELECT dateapplied,
(CASE WHEN (DAY(dateapplied) > 25) THEN
STR_TO_DATE(CONCAT(DATE_FORMAT(dateapplied, '%Y%m'), '10'), '%Y%m%d') + INTERVAL 1 MONTH
WHEN (DAY(dateapplied) > 10) THEN
STR_TO_DATE(CONCAT(DATE_FORMAT(dateapplied, '%Y%m'), '25'), '%Y%m%d')
ELSE
STR_TO_DATE(CONCAT(DATE_FORMAT(dateapplied, '%Y%m'), '10'), '%Y%m%d')
END) AS `startdeduct`
FROM example
甚至更短
SELECT dateapplied,
(STR_TO_DATE(CONCAT(DATE_FORMAT(dateapplied, '%Y%m'),
IF(DAY(dateapplied) BETWEEN 11 AND 25, '25', '10')), '%Y%m%d') +
INTERVAL IF(DAY(dateapplied) > 25, 1, 0) MONTH) AS `startdeduct`
FROM example
更新表的语句:
UPDATE mydb.loan SET startdeduct =
(STR_TO_DATE(CONCAT(DATE_FORMAT(dateapplied, '%Y%m'),
IF(DAY(dateapplied) BETWEEN 11 AND 25, '25', '10')), '%Y%m%d') +
INTERVAL IF(DAY(dateapplied) > 25, 1, 0) MONTH)
关于php - 如何查找给定日期最近的第 25 天或第 10 天并将其添加到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33298126/