我的表中有三个日期值,即ActivationDate,RegistrationDate和CreationDate,我希望有一个select来显示值最小的列的名称。
我用过
从表名
中选择LEAST(ActivationDate,RegistrationDate,CreationDate)
并返回最小值。但是,我想知道这三个中哪一个是最小值。因此,我的预期结果是具有最短日期的列的名称,该日期可以是激活日期,注册日期或创建日期。
对于您的解决方案,如果其中3个具有相似的值,请说明结果是什么?是全部还是一个?
由于
答案 0 :(得分:1)
您只需要在条件语句中针对每列测试least
值。
假设有以下表格结构
CREATE TABLE `test` (
`activationdate` datetime DEFAULT NULL,
`registrationdate` datetime DEFAULT NULL,
`creationdate` datetime DEFAULT NULL
)
带有这些值
mysql> select * from test;
+---------------------+---------------------+---------------------+
| activationdate | registrationdate | creationdate |
+---------------------+---------------------+---------------------+
| 2015-01-01 00:00:00 | 2015-01-02 00:00:00 | 2015-01-03 00:00:00 |
| 2015-01-30 00:00:00 | 2015-01-15 00:00:00 | 2015-01-12 00:00:00 |
+---------------------+---------------------+---------------------+
您可以使用以下查询来提取最小的值和列名:
select least(activationdate, registrationdate, creationdate) as value,
case when least(activationdate, registrationdate, creationdate) = activationdate then 'activationdate'
when least(activationdate, registrationdate, creationdate) = registrationdate then 'registrationdate'
when least(activationdate, registrationdate, creationdate) = creationdate then 'creationdate'
end as field
from test;
它会给你这些结果:
+---------------------+----------------+
| value | field |
+---------------------+----------------+
| 2015-01-01 00:00:00 | activationdate |
| 2015-01-12 00:00:00 | creationdate |
+---------------------+----------------+
答案 1 :(得分:0)
我认为你应该获取所有三个最小值:
git config --global core.autocrlf input
之后,通过java / php或您正在使用的任何内容,取最小值