mysql 查询 - 显示上个月的数据 unix 时间戳
mysql query - show last month's data 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 日的日期时间戳。我已经编辑了查询和外卖 CURDATE
但它在这一点上失败了。
问题是我如何将此查询更改为只显示最后几个月,即如果月份是 11 月,则显示 10 月的数据。
您必须获取上个月的第一天和上个月的最后一天之间的范围,您可以通过设置日期格式并将日部分设置为 01
来获取该范围。有一个 function 。在手册的同一页上,您还可以找到有关 DATE_FORMAT()
.
的信息
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
我进行了此查询,它可以正常显示从当前日期起一个月的数据。例如这个查询:
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
来获取该范围。有一个 function 。在手册的同一页上,您还可以找到有关 DATE_FORMAT()
.
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