你好,我有两列日期时间的多行,我想获取所有记录的两列之间的最新日期(最高)的行。请查看以下内容:
ID|Date1 |Date2
1 |2021-06-10 19:03:36 |Null
2 |2021-06-11 19:33:41 |2021-06-16 09:49:41
3 |2021-06-16 20:04:24 |Null
我想从两列(Date1和Date2)的所有记录中获取最高日期。从上表中,我想要第三行日期,因为这是两列所有记录中的最高日期(2021-06-16 20:04:24)。如果我们在2021-06-16 09:20:41之前更改date1列第3行,那么结果将是第2行,因为在date2中找到了最高日期记录。请帮助我创建mysql查询以获取完整的数据行
有一种方法可以用最少的SQL“你的桌子”是不管你的桌子叫什么名字:
select ID, Date1, Date2
from yourtable
where greatest(
coalesce(Date1,'1900-01-01'),
coalesce(Date2,'1900-01-01')
) in (
select max(greatest(
coalesce(Date1,'1900-01-01'),
coalesce(Date2,'1900-01-01')
)) from yourtable
)
然而,对于大型表,这种查询的性能可能无法扩展。编辑:更新为将空日期的coalesce()包含到任意“早”日期。
您可以合并这两列并获得MAX()
:
SELECT MAX(dateColumns)
FROM
(
SELECT DATE1 as dateColumns FROM yourtable
UNION ALL
SELECT DATE2 FROM yourtable
) sub
如果您只想要结果中的一行,而不关心关系,则使用magest()
获取每行的最大日期,按该最大日期降序排序,并使用LIMIT 1
选择最上面的一行:
SELECT *
FROM tablename
ORDER BY GREATEST(COALESCE(Date1, '1000-01-01'), COALESCE(Date2, '1000-01-01')) DESC
LIMIT 1
如果Date1
不能为空,则仅对Date2
使用COALESCE()
:
SELECT *
FROM tablename
ORDER BY GREATEST(Date1, COALESCE(Date2, '1000-01-01')) DESC
LIMIT 1
请看演示
问题内容: 这个问题已经在这里有了答案 : 获取两个日期之间的日期列表 (20个答案) 7年前关闭。 我想通过选择查询将日期列表放在两个日期之间。例如: 如果我给出“ 2012-02-10”和“ 2012-02-15”,则需要结果。 我怎样才能得到? 问题答案: 尝试: -日期范围可长达近300年。 [根据UrvishAtSynapse的建议编辑进行更正。]
问题内容: 在MySql数据库中有表 我的问题是,我要传递开始日期和结束日期,然后我将获得列日期,例如: 那么我将获得101,102,103 UserId的值。但是我出错了 问题答案: 这可能会更好: 也可能是保留字,对此不太确定。如果是这种情况,则您需要在其周围加反引号(前后应有一个`)
问题内容: 我想查询一个mySQL表以提取两次和两次之间的数据。我知道如何使用“ between”调用对单个“ datetime”列执行此操作,但是我的列是一个“ date”列和一个“ time”列。我在网上可以找到的所有解决方案都是针对单个datetime列的。 我的范围从15:30的“ day1”到15:14的day1 + 1day 到目前为止,我可以获得以下范围(有效): 但是我显然需要合并
问题内容: 使用标准的mysql函数可以编写查询,该查询将返回两个日期之间的天数列表。 例如,给定2009-01-01和2009-01-13,它将返回一个具有以下值的列表: 编辑:看来我还不清楚。我要生成此列表。我在数据库中存储了值(按日期时间),但希望将它们在左外部联接中汇总到上述日期列表中(我希望这种联接的某些右侧在几天内会为null并将对此进行处理) )。 问题答案: 我将使用此存储过程将所
问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em
问题内容: 这个问题已经在这里有了答案 : 获取两个日期之间的日期列表 (19个答案) 7年前关闭。 我想通过选择查询将日期列表放在两个日期之间。例如: 如果我给出“ 2012-02-10”和“ 2012-02-15”,则需要结果。 我怎样才能得到? 问题答案: 尝试: -未来的日期范围将近300年。 [根据UrvishAtSynapse的建议编辑进行更正。]