2

我有一个数据库表。它有数百个条目,每个条目都带有时间戳。我希望每天只输出而不让它在任何日子重复。

数据:
2009-02-04 06:20:27
2009-02-04 06:20:27
2009-02-05 06:20:27
2009-02-07 06:20:27
2009-02-07 06:20 :27
2009-02-07 06:20:27

输出应该只是(时间无关紧要):
2009-02-04 06:20:27
2009-02-05 06:20:27
2009-02-07 06:20:27

实现这一目标的最佳方法是什么?我真的应该在每一行中循环并进行比较吗?只是看起来效率不高。有什么想法/提示吗?

4

5 回答 5

4

您不能只在查询中选择“DISTINCT”时间戳吗?

或者,如果每天的时间不同(从您的示例中不确定),您可以使用 mysql DATE 函数将时间戳列转换为飞行日期。请记住,如果在该列上使用索引,这可能会阻止使用索引。

例如。

SELECT DISTINCT DATE(timestamp_column) FROM table

这将删除时间戳的时间部分。

于 2009-02-18T04:59:04.440 回答
1

您可能希望使用 mysql DISTINCT 关键字在数据库级别执行此操作:

SELECT DISTINCT date
FROM table

这将使得如果有重复的日期,只返回一个。在此处阅读更多相关信息。

于 2009-02-18T04:59:05.000 回答
1

这将打印出双时间戳,但应该仅与日期不同。

SELECT DISTINCT CAST(timestamp AS DATE), timestamp, FROM table.
于 2009-02-18T05:06:21.223 回答
1
SELECT DISTINCT CAST(data AS DATE)
    FROM DataTable;

这会删除时间部分,然后给出唯一的 DATE 值。

于 2009-02-18T05:09:22.510 回答
0

DATE() 函数将从日期时间字段中提取日期。您可以使用该结果进行分组。像这样使用:

SELECT fields FROM table WHERE condition GROUP BY DATE(datefield)
于 2009-02-18T05:07:08.430 回答