当MySQL中没有日期时返回当前日期

时间:2015-08-13 07:43:53

标签: mysql date

我使用以下代码从日期列返回数据,但如果没有日期,我不确定如何返回今天的日期。

为了将其置于上下文中,患者将导管插入date,然后在另一date上移除。如果它没有被删除(即"删除"列中没有date),它仍然存在,所以我需要将NULL替换为current date

我让它工作,它只是拉回NULL的当前日期而没有其他日期(对于在" Removed")中输入的患者,以及我可以获得" Removed"的日期其余的NULL足够容易,但无法成功连接两者。我的最新尝试是提供了一个错误的param count错误,我理解但不知道如何继续。

select 
oid,
DATE_FORMAT(va.ins_dte, '%d/%m/%Y') AS 'Inserted',
(DATE_FORMAT(va.rem_dte, '%d/%m/%Y') , ifnull(va.rem_dte), curdate()) AS 'Removed'
from Vascular va

有人可以告诉我如何将所有内容移除dates以及NULL,请添加当前的date吗?

谢谢,

麦克

2 个答案:

答案 0 :(得分:1)

IFNULL的语法是:

SELECT IFNULL (`NullableValue`, ValueIfNull)) FROM `TableName`

您应该将其用作ifnull的第二个参数:

ifnull(va.rem_dte, curdate())

你的最终SQL应该是:

SELECT 
    oid, DATE_FORMAT(va.ins_dte, '%d/%m/%Y') AS 'Inserted',
    DATE_FORMAT(IFNULL(va.rem_dte, CURDATE()), '%d/%m/%Y') AS 'Removed'
FROM Vascular va

答案 1 :(得分:1)

这应该根据IFNULL的文档

进行
SELECT 
    oid,
    DATE_FORMAT(va.ins_dte, '%d/%m/%Y') AS 'Inserted',
    DATE_FORMAT(IFNULL(va.rem_dte, CURDATE()), '%d/%m/%Y') AS 'Removed'
FROM Vascular va

对于您的情况,如果va.rem_dteNULL,您希望获取当前日期。这可以表示为

IFNULL(va.rem_dte, CURDATE())

然后可以将该表达式的结果传递给DATE_FORMAT函数:

DATE_FORMAT(IFNULL(va.rem_dte, CURDATE()), '%d/%m/%Y')