2009-02-18 112 views
2

我有一个数据库表。它有几百个条目,每个条目都有时间戳。我期待着只输出每一天,而不是任何日子重复。从结果中计算日期的最佳方法是什么?

数据:
2009-02-04 6点20分27秒
2009-02-04 6点20分27秒
2009-02-05 6点20分27秒
2009-02-07 06 :20:27
2009-02-07六点20分27秒
2009-02-07六点20分27秒

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

完成此操作的最佳方法是什么?我真的应该骑自行车穿过每一排,然后比较一下吗?看起来效率不高。任何想法/提示?

回答

1

你会想这样做就使用mysql DISTINCT关键字数据库级别:

SELECT DISTINCT date 
FROM table 

这将使它所以如果有重复的日期,只返回一个。详细了解它here

+0

有效,但不会忽略日期时间字段中的时间。 – Suroot 2009-02-18 05:11:32

+0

它对样本数据有效,因为每个条目都具有相同的时间值。如果有任何不同的时间分量,那么它会产生错误的结果。 – 2009-02-18 05:45:21

4

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

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

例如。

SELECT DISTINCT DATE(timestamp_column) FROM table 

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

1

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

SELECT DISTINCT CAST(timestamp AS DATE), timestamp, FROM table. 
0

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

SELECT fields FROM table WHERE condition GROUP BY DATE(datefield) 
1
SELECT DISTINCT CAST(data AS DATE) 
    FROM DataTable; 

这个下降的时间部分,然后给出唯一DATE值。

相关问题