直到今天,当我使用MySQL并需要对日期/时间执行操作时,我一直使用带有unix时间戳的int列,但是没有问题,但是今天在阅读了一些指南之后,我决定默认情况下使用“current_timestamp”来测试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/

10-11 02:51