我有一个有dateTime字段的表。如何检索今天创建的值?
来宾tbl
.-----------------+--------------+-----------------------.
| 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();
答案 0 :(得分:0)
制定此类查询的最佳方法是将生效日期和都设为结束日期。这是缓慢变化的维度的最佳实践。
太迟了。因此,您需要在给定日期之前获取每个访客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;