MySQL 按current_timestamp 选择上个月的数据

标签 mysql timestamp

直到今天,当我使用 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/

相关文章:

php - Mysqli 多表操作

sql - 如何使用时间戳选择 20 天的 SQL 数据

SELECT 中忽略的 MySQL DISTINCT 显示重复

mysql #1215 - 无法添加外键约束 - 但为什么?

java - 结果集并不总是显示在 JTable 中

mysql - 有条件地执行查询

php - 如何在strtotime中写一个full time?

java - 使用 Log4j2 2.11 的微秒级打印分辨率

postgresql - Postgres : Queries with INTERVAL operation don work over constraints

java - System.nanoTime() 是否跨线程一致?