gpt4 book ai didi

mysql - 选择两个可为空的日期时间中最早的一个

转载 作者:可可西里 更新时间:2023-11-01 07:56:24 28 4
gpt4 key购买 nike

在一个包含两个可为 null 的日期/日期时间列的表中,您如何有效地选择两个非 NULL 的最早日期?

具体来说,这是我感兴趣的:

|   Date1    |   Date2    |    |  Expected  |
|------------|------------| |------------|
| 2014-02-23 | 2014-01-16 | | 2014-01-16 |
| 2014-02-01 | NULL | | 2014-02-01 |
| NULL | 2014-01-13 | | 2014-01-13 |
| NULL | NULL | | NULL |

我可以设法使用以下任一查询来获取这些结果。我的两个解决方案都使用 LEAST 运算符,当其中一个参数为 NULL 时返回 NULL(而不仅仅是当两个参数都为 NULL 时),因此需要更多逻辑才能完成工作。

SELECT IF(ISNULL(Date1), Date2, IFNULL(LEAST(Date1, Date2), Date1)) AS EarlyDate FROM MyTable

或等价物:

SELECT IFNULL(IFNULL(LEAST(Date1, Date2), Date1), Date2) AS EarlyDate FROM MyTable

我的感觉是我上面的两个查询都有一些多余的东西。谁能提出更好的解决方案?

最佳答案

你必须检查 NULL,试试这个:

SELECT IF(Date1 IS NULL OR Date2 IS NULL, 
COALESCE(DATE1, DATE2),
LEAST(DATE1, DATE2)
) AS EarlyDate
FROM MyTable

工作 fiddle :http://sqlfiddle.com/#!2/7940c/1

关于mysql - 选择两个可为空的日期时间中最早的一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506390/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com