选择两个日期之间的记录

时间:2011-06-13 11:30:22

标签: mysql date

我有以下查询:

SELECT dm.app_id, apt.app_name, COUNT(dm.app_id) 
FROM dm_openapp dm
JOIN app_table apt ON dm.app_id = apt.app_id
GROUP BY dm.app_id 

基本上这个表还有与每条记录相关的日期,我需要在时间X和Y之间获得所有记录的范围,例如,我尝试使用以下内容,但无济于事:

WHERE dm.dl_time BETWEEN '2011-05-31' AND '2011-05-06'

知道怎么做? dl_time列是时间戳类型。

4 个答案:

答案 0 :(得分:7)

最好将DATETIME列类型用于这些事情。应该工作:使用str_to_date()功能。另外,交换BETWEEN值。

WHERE dm.dl_time BETWEEN str_to_date('2011-05-06','%Y-%m-%d') AND str_to_date('2011-05-31','%Y-%m-%d')

答案 1 :(得分:4)

嗯......你的数据错误了。 BETWEEN必须为低值至高值:

试试这个:

WHERE dm.dl_time BETWEEN '2011-05-06' AND '2011-05-31' -- Note date values swapped

您可以忽略其他答案,但也没有注意到这一点......

答案 2 :(得分:1)

SELECT date_column
FROM dates
WHERE date(date_column)<='2011-05-06' AND date(date_column)>='2011-05-31'

答案 3 :(得分:0)

您需要将where子句中的字符串转换为日期STR_TO_DATE。以下是MySQL中可用于DATE操作的各种不同函数。

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html