MySQL按current_timestamp选择上个月的数据

MyM*_*ial 7 mysql timestamp

直到今天,当我使用MySQL并且需要执行日期/时间的操作时我使用带有unix时间戳的int列并且没有问题,但是今天在阅读了一些指南之后我决定默认使用"current_timestamp"测试时间戳列.

所以我感兴趣的是如何按列选择上个月的数据,其中信息是"2012-09-07 00:23:30"格式?也许有一些棘手的问题会从本月初开始给我数据(不是过去30天,而是从09-01 00:00:00到今天)?

Ari*_*iel 17

这将给你上个月:

WHERE dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();
Run Code Online (Sandbox Code Playgroud)

这从月初开始:

WHERE dateColumn BETWEEN STR_TO_DATE('2012-09-01', '%Y-%m-%d') AND NOW();
Run Code Online (Sandbox Code Playgroud)

BETWEEN没什么特别的,它只是一个捷径

dateColumn <= ... AND dateColumn >= ....
Run Code Online (Sandbox Code Playgroud)

嗯,我想实际上并不需要NOW()比较,因为所有记录都将在此之前.

所以这样做:

WHERE dateColumn >= STR_TO_DATE('2012-09-01', '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)

当月的动态开始:

WHERE dateColumn >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY
Run Code Online (Sandbox Code Playgroud)

所有这一切都是从当前日期中提取当月的日期,然后从中扣除那么多天.