mysql查询-显示上月的数据unix时间戳

mysql查询-显示上月的数据unix时间戳,mysql,unix-timestamp,Mysql,Unix Timestamp,我已经做了这个查询,它可以正确地显示从当前日期起一个月的数据。例如,此查询: SELECT * FROM test WHERE price >=100 AND active = 1 AND dateadded >= UNIX_TIMESTAMP(DATE_SUB( CURDATE(), INTERVAL 1 MONTH)) ORDER BY testvalue DESC 此查询输出从10月30日到当前日期11月30日的日期时间戳。我已经编辑了查询和外卖CUR

我已经做了这个查询,它可以正确地显示从当前日期起一个月的数据。例如,此查询:

SELECT * 
  FROM test 
 WHERE price >=100 
  AND active = 1 
  AND dateadded >= UNIX_TIMESTAMP(DATE_SUB( CURDATE(), INTERVAL 1 MONTH)) 
ORDER BY testvalue DESC
此查询输出从10月30日到当前日期11月30日的日期时间戳。我已经编辑了查询和外卖CURDATE,但在这一点上失败了


问题是,如果月份是11月,我如何将此查询更改为仅显示最后几个月,即10月的数据

您必须获得上个月的第一天和上个月的最后一天之间的范围,您可以通过格式化日期并将日期部分设置为01来获得该范围。这是有道理的。在手册的同一页上,您还可以找到有关日期格式的信息


这是一个很好的策略,但它会从月的最后一天开始就删除结果,因为它介于月的第一天开始和月的最后一天开始之间。第二部分应该是和UNIX\u TIMESTAMPDATE\u FORMATDATE\u SUB CURDATE,间隔0个月,“%Y-%m-01”感谢您发现此错误,但恐怕您的错误也不是100%正确。因为中间是包括在内的,所以你实际上必须在前一天结束的时候。关于这一点,我已经确定了答案。当你减去0个月的时候,你可能根本不减去任何东西。但再次感谢您通知我。所以我的更新将显示下个月第一秒的订单。好的,很好的更新,谢谢。你有一个新的打字错误。UNIX_TIMESTAMPCONCATLAST_DAYDATE_SUB CURDATE,间隔1个月,'23:59:59'应为UNIX_TIMESTAMPCONCATLAST_DAYDATE_SUB CURDATE,间隔1个月,'23:59:59',缺少右括号。
SELECT * 
  FROM test 
 WHERE price >=100 
  AND active = 1 
  AND dateadded BETWEEN 
    UNIX_TIMESTAMP(DATE_FORMAT(DATE_SUB( CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01')) 
    AND UNIX_TIMESTAMP(CONCAT(LAST_DAY(DATE_SUB( CURDATE(), INTERVAL 1 MONTH), ' 23:59:59'))
ORDER BY testvalue DESC