我有一个数据库表。它有几百个条目,每个条目都有时间戳。我希望每天只输出,而不是任何日子都重复。
数据:
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
实现这一目标的最佳方法是什么?我真的应该骑自行车穿过每一排并相互比较吗?只是看起来效率不高。任何想法/提示?
答案 0 :(得分:4)
你不能在查询中选择“DISTINCT”时间戳吗?
或者如果每天的时间不同(从您的示例中不确定),您可以使用mysql DATE函数将timestamp列转换为fly的日期。请记住,如果索引在该列上使用,则可能会阻止使用索引。
例如
SELECT DISTINCT DATE(timestamp_column) FROM table
这将删除时间戳的时间部分。
答案 1 :(得分:1)
您可能希望使用mysql DISTINCT关键字在数据库级别执行此操作:
SELECT DISTINCT date
FROM table
如果有重复日期,则会返回,只返回一个。阅读更多相关信息here。
答案 2 :(得分:1)
这将打印出双时间戳,但应仅与日期不同。
SELECT DISTINCT CAST(timestamp AS DATE), timestamp, FROM table.
答案 3 :(得分:1)
SELECT DISTINCT CAST(data AS DATE)
FROM DataTable;
这会删除时间部分,然后给出唯一的DATE值。
答案 4 :(得分:0)
DATE()函数将从日期时间字段中提取日期。您可以使用该结果进行分组。像这样使用:
SELECT fields FROM table WHERE condition GROUP BY DATE(datefield)