检查日期列是否在某个时期内,这取决于另一个日期列

时间:2018-12-11 12:57:52

标签: mysql sql

好吧,我有这部分查询:

round(if(((t1.docType=1 and t1.installments=1) or (t1.docType=3 and t1.installend=t1.insend)), "", t1.premiaPaid),2) AS custom_field

问题来自这里t1.installend=t1.insend,其中:

t1.installend = 2018-11-29
t1.insend = 2018-11-28

它以这种形式返回false,但是我希望这部分条件使我返回true,所以我想获取t1.insend并检查i f 2018-11-28是否在t1.installend中+-5天,在此示例中为:

如果2018-11-282018-11-232018-12-04之间,它将返回TRUE。

MySQL是否可能,或者我应该编写一些代码?

1 个答案:

答案 0 :(得分:3)

您可以使用帮助INTERVAL语句来计算日期范围的开始和结束。例如:

SELECT
  t1.installend - INTERVAL 5 DAY, /*start date*/
  t1.installend + INTERVAL 5 DAY  /*end date*/
FROM <your table name>

此外,您可以使用BETWEEN语句检查日期范围内是否存在日期。例如:

t1.insend BETWEEN t1.installend - INTERVAL 5 DAY AND t1.installend + INTERVAL 5 DAY