我需要一种方法来查询数据集合。我有一个最近活动日期的列表,每个活动日期存储在每个用户的1行中。每行都有一个loginDates字段,该字段由逗号分隔的时间戳列表组成。
我需要做的是在此日期运行报告,以查找自XXXXXX时间戳以来的人员。问题在于它的逗号分隔意味着我无法使用我所知道的方法进行查询。
这是一个示例行
id userID accessDates
2 6 1399494405,1399494465,1399494525,1399494585,1399494623
我想用纯文本实现的目标
SELECT all_fields FROM accessTable WHERE accessDate > YESTERDAY
此外,这些日期可能会持续数百天,并且有数百个时间戳。
答案 0 :(得分:0)
假设TimeStamp值在数据样本显示时是有序的,如果字符串中的任何TimeStamp值大于给定日期,那么最新的值也将大于该值。因此,您只需要最新的TimeStamp值即可满足您的要求:
SET @Yesterday =
UNIX_TIMESTAMP(DATE_ADD(DATE(CURRENT_TIMESTAMP()),INTERVAL -1 DAY));
SELECT *
FROM accessTable
WHERE CAST(RIGHT(accessDates,10) AS UNSIGNED) > @Yesterday;
如果您想单独查询每个TimeStamps,最好的解决方案是将它们放入带有用户ID的单个表列中:
userID accessDate
------ ----------
6 1399494405
6 1399494465
6 1399494525
6 1399494585
6 1399494623