直到今天,当我使用 MySQL 并需要使用日期/时间执行操作时,我使用的是带有 unix 时间戳的 int 列,没有任何问题,但今天在阅读了一些指南后,我决定使用“current_timestamp”测试时间戳列默认情况下。
所以我很感兴趣如何按信息格式为“2012-09-07 00:23:30”的列选择上个月的数据?也许会有一些棘手的查询会给我从本月初开始的数据(不是过去 30 天,而是从 09-01 00:00:00 到今天)?
最佳答案
这会给你最后一个月:
WHERE dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();
从月初开始:
WHERE dateColumn BETWEEN STR_TO_DATE('2012-09-01', '%Y-%m-%d') AND NOW();
BETWEEN没什么特别的,它只是一个快捷方式
dateColumn <= ... AND dateColumn >= ....
嗯,我想实际上不需要 NOW() 比较,因为所有记录都在现在之前。
就这样吧:
WHERE dateColumn >= STR_TO_DATE('2012-09-01', '%Y-%m-%d')
当月动态开始:
WHERE dateColumn >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY
所有这一切都是从当前日期中提取该月的第几天,然后从中减去那么多天。
关于MySQL 按current_timestamp 选择上个月的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12309289/