mysql - 正确查询以获取日期时间

标签 mysql sql

我有一个包含日期时间字段的表。如何检索今天创建的值?

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/

相关文章:

php - 如何在搜索功能中从两个表中检索数据

php - 查询不返回任何记录,但 phpmyadmin 返回

sql - 如果不存在则创建 PostgreSQL ROLE (user)

Sql DbGeography 问题

sql - 如何让SQL Server 2012删除过期记录并每天检查

php - MySQL:如何按评分和距离排序?

java - 无法使用 hibernate 执行 HQL 更新查询

MySQL - 提取 ID 组的日期范围内的最新值

SQL:有关 sql 连接的帮助

具有过滤功能的 AVG 函数中的 MySQL 精度