使用Unix选择上个月的行

时间:2018-09-30 21:18:09

标签: php mysql unix-timestamp

我正在尝试从上个月的表中选择所有行,基本上就像这个人问的:MySQL select all rows from last month until (now() - 1 month), for comparative purposes

但是我在日期列中使用的是unix时间戳,所以日期是这样的:1538330400

所以我开始使用(选择日期等于或早于今天的行):

SELECT * FROM ns_trainingame t WHERE t.date <= UNIX_TIMESTAMP(NOW());

效果很好。

然后,经过一番研究,我发现一些人使用一些代码来代替UNIX TIMESTAMPS,并试图对其进行调整以解决我的问题。

SELECT * 
FROM ns_trainingame t 
WHERE t.date >= UNIX_TIMESTAMP(DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY)) 
  AND t.date <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH))");

但是在这种情况下给我的行数错误。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您要获取上个月(截至8月30日至9月30日)的所有结果,这可能是最简单的方法。使用FROM_UNIXTIME将时间戳转换为日期,然后可以将其直接与其他日期进行比较:

SELECT * 
FROM ns_trainingame t 
WHERE FROM_UNIXTIME(t.date) BETWEEN CURDATE() - INTERVAL 1 MONTH AND CURDATE()