正确查询以获取日期时间

时间:2016-02-11 13:58:39

标签: mysql sql mysqli

我有一个有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();

1 个答案:

答案 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;