我有两列:warning: here-document at line <n> delimited by end-of-file (wanted 'EOF')
和@NgModule({
imports: [
//SharedModule //This is removed
routing
],
declarations: [LazyComponent]
})
。我需要找到rental_date
和actual_retdate
之间的天数。对于某些情况,actual_retdate
可以为null,因此我想查找今天的日期和这些情况下的租赁日期之间的天数。
目前我有:
rental_date
这给了我答案:
Rental_date actual_retdate Daysbetween 2014-07-04 2014-07-11 7 2016-05-06 2016-05-08 2 2016-08-07 2016-09-07 100 2015-02-02 2015-02-10 8 2015-10-10 2015-10-15 5 2015-08-07 2015-08-17 10 2017-02-04 NULL NULL 2016-07-08 2016-07-16 8 2017-03-02 NULL NULL 2015-03-15 2015-04-15 100
答案 0 :(得分:2)
听起来你可以用NOW()来合并actual_retdate。
看起来像是:
SELECT rental_date,
actual_retdate,
COALESCE(actual_retdate,NOW()) - rental_date as 'Daysbetween'
FROM rental_agreement
COALESCE基本上返回列表中的第一个非空值。因此,如果actual_retdate为NULL,它将返回NOW()的值。
https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_coalesce
编辑:由于Spencer提到减法不是完全可靠的,以此来获得天数的差异,这里是使用他建议的TIMESTAMPDIFF的更新片段。
SELECT rental_date,
actual_retdate,
TIMESTAMPDIFF(DAY,COALESCE(actual_retdate,NOW()),rental_date) as 'Daysbetween'
FROM rental_agreement
答案 1 :(得分:1)
当值为COALESCE
时,使用NULL
为案例提供其他值:
SELECT
rental_date,
actual_retdate
COALESCE( actual_retdate, CURDATE() ) AS actual_retdate_or_today,
COALESCE( actual_retdate, CURDATE() ) - rental_date AS days_between
FROM
rental_agreement
CURDATE()
返回当前日期。我假设actual_retdate
是date
列,而不是datetime
列,因为结果可能是意外的。另外,请考虑使用DATEADD
代替-
运算符来执行日期算术运算。
我重复COALESCE( actual_retdate, CURDATE() )
表达式的原因是因为在SQL中你不能在另一列中引用列表达式 - 你必须重新计算结果或将它包装在外部查询中。
答案 2 :(得分:1)
您正在寻找coalesce()
:
select rental_date, actual_retdate,
coalesce(actual_retdate, curdate()) - rental_date as Daysbetween
from rental_agreement