MySQL按current_timestamp选择上个月的数据

时间:2012-09-06 22:22:52

标签: mysql timestamp

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

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

3 个答案:

答案 0 :(得分:17)

这将在上个月给你:

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

所有这一切都是从当前日期中提取当月的日期,然后从中减去多少天。

答案 1 :(得分:3)

你应该看看common_schema,它很容易安装,并且有很多很棒的工具,包括一个名为start_of_month()的功能,正是你想要的:

select * 
from your_table
where your_column >= common_schema.start_of_month(now())

答案 2 :(得分:-1)

如果您有一个mysql时间戳,可以使用2013-09-29 22:27:10这样的

 select * from table WHERE MONTH(FROM_UNIXTIME(UNIX_TIMESTAMP(time)))=9;

转换为unix,然后使用unix时间函数提取月份,在本例中为9月9日。