我有一个包含日期时间字段的表。如何检索今天创建的值?
guest 待定
.-----------------+--------------+-----------------------.
| guestID | Name | date_created |
+-----------------+--------------+-----------------------+
| 1 | Name1 | 2016-02-11 21:32:47 |
| 1 | Name2 | 2016-02-15 20:12:30 |
.-----------------+--------------+-----------------------.
我使用了这个查询,它在日期数据类型中运行良好,但在我使用 dateTime 数据类型时它不起作用。
SELECT *
FROM guests
WHERE date_created BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND CURDATE();
最佳答案
制定此类查询的最佳方式是同时设置生效日期和结束日期。这是一个缓慢变化的维度的最佳实践。
太迟了。因此,您需要在给定日期之前获取每个客人 ID 的最新日期。您可以通过以下方式获得:
select t.guest_id, max(date_created) as maxdc
from t
where t.date_created <= $SOMEDATE
group by t.guest_id;
您可以使用 join
获取完整信息:
select t.*
from (select t.guest_id, max(date_created) as maxdc
from t
where t.date_created <= $SOMEDATE
group by t.guest_id
) tt join
t
on t.guest_id = tt.guest_id and t.date_created = tt.maxdc;
关于mysql - 正确查询以获取日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35341346/