我有以下查询:
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列是时间戳类型。
答案 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