MySQL日期分组

时间:2014-09-21 11:24:19

标签: php mysql

我在MySQL中有一个金融交易表,我正在尝试生成交易报告。鉴于业务运营的方式,财务日是凌晨4点 - 凌晨4点而不是午夜 - 午夜,所以不是按照Y-m-d对交易进行分组,而是我必须考虑午夜后发生的所有交易。

例如:

财务日是周一凌晨4点 - 周二凌晨4点。周二午夜之后发生的任何交易都需要在周一的销售中进行分类。

目前我的查询的前提是:

select from_unixtime(date, '%Y-%m-%d') as t_date from transactions group by t_date

我尝试在查询中使用if语句来确定当前行日期是在午夜之后但在凌晨4点之前,但无济于事。希望我可以在MySQL中使用它,而不必遍历PHP中的所有事务行。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

从交易时间减去4小时。按该值分组。 MySQL有date and time functions可以帮助你减法。

答案 1 :(得分:0)

如果你要求获得昨天的记录 以下是处理此问题的查询。

SELECT DATE_FORMAT( t.date,  '%Y-%m-%d %k' ) as perDay 
FROM `table` t
WHERE t.date BETWEEN DATE_ADD(CURDATE(), INTERVAL -1 day) AND CURDATE()
GROUP BY perDay

答案 2 :(得分:0)

如果你想在星期一凌晨4点到星期二凌晨3点之间进行所有交易,那么我认为你需要检查日期加时间也像“Y-m-d h:i:s”,